,,浅析React 对state的理解

,,浅析React 对state的理解

State是组件实例对象的状态,不是组件类本身,而是这个类创建的实例。本文主要介绍React对状态的理解。有需要的朋友可以参考一下。

如何定义复杂组件(类组件)和简单组件(功能组件)?

有国家吗?

引出问题,什么是状态?

比如今天的考试,我考砸了,因为我状态不好。是状态影响了我的行为

组件中的状态驱动更新页面。换句话说,组件的状态存储数据,数据的变化驱动页面更新。

这里,要明白,国家是谁的国家?State是组件实例对象的状态,不是组件类本身,而是这个类创建的实例。

(class)组件实例上三大属性之一:state

显示内容

实现一个需求,通过点击页面,在热与凉之间切换。

!文档类型html

html lang='en '

meta charset='UTF-8' /

meta http-equiv=' X-UA-Compatible ' content=' IE=edge '/

meta name=' viewport ' content=' width=device-width,initial-scale=1.0' /

title react/标题

/头

身体

div id='test'/div

!-介绍核心库-

脚本src='./js/react . development . js '/script

!-扩展库-

脚本src='./js/react-DOM . development . js '/脚本

!-将jsx转换为js -

脚本src='./js/babel.min.js'/script

脚本类型='text/babel '

//1.创建一个组件

班级天气延伸反应。组件{

/**

*构造函数中可以接收的数据取决于新数据时传输的数据。

*新气象不是我们操作的,而是react操作的。

*/

施工员(道具){

//还没学过道具,但是需要。模仿官网的写法。

//类本身的语法

超级(道具);

//构造函数中的this指向构造函数实例对象

//16.8之前,状态为{},16.8之后,为null。

this.state={

isHot:没错,

};

}

render() {

console.log('this:',this);

返回h1今天很热/h1;

}

}

//2.将组件呈现到页面

ReactDOM.render(Weather /,document . getelementbyid(' test ');

/脚本

/body

/html

初始化数据

!文档类型html

html lang='en '

meta charset='UTF-8' /

meta http-equiv=' X-UA-Compatible ' content=' IE=edge '/

meta name=' viewport ' content=' width=device-width,initial-scale=1.0' /

title react/标题

/头

身体

div id='test'/div

!-介绍核心库-

脚本src='./js/react . development . js '/script

!-扩展库-

脚本src='./js/react-DOM . development . js '/脚本

!-将jsx转换为js -

脚本src='./js/babel.min.js'/script

脚本类型='text/babel '

//1.创建一个组件

班级天气延伸反应。组件{

/**

*构造函数中可以接收的数据取决于新数据时传输的数据。

*新气象不是我们操作的,而是react操作的。

*/

施工员(道具){

//我还没学过道具,但是必须要用。模仿官网的写法,不然我执行不了。

//类本身的语法

超级(道具);

//构造函数中的this指向构造函数实例对象

//16.8之前,状态为{},16.8之后,为null。

this.state={

isHot:没错,

};

}

//状态在Weather的实例对象上

render() {

console.log('this:',this);

返回h1今天的天气很{this.state.isHot?hot ':' cool ' }/h1;

}

}

//2.将组件呈现到页面

ReactDOM.render(Weather /,document . getelementbyid(' test ');

/脚本

/body

/html

接下来写click事件,注意,先做个错误演示。

脚本类型='text/babel '

//1.创建一个组件

班级天气延伸反应。组件{

/**

*构造函数中可以接收的数据取决于新数据时传输的数据。

*新气象不是我们操作的,而是react操作的。

*/

施工员(道具){

//还没学过道具,但是需要。模仿官网的写法。

//类本身的语法

超级(道具);

//构造函数中的this指向构造函数实例对象

//16.8之前,状态为{},16.8之后,为null。

this.state={

isHot:没错,

};

}

//状态在Weather的实例对象上

render() {

console.log('this:',this);

返回(

h1 onClick={demo()}

天气很冷。热':'冷' }

/h1

);

}

}

函数演示(){

Console.log('调用演示');

}

//2.将组件呈现到页面

ReactDOM.render(Weather /,document . getelementbyid(' test ');

/脚本

当我调用click事件时,我写的是onClick={demo()}

你可以在控制台找到它,函数被立即执行了

当react处于新气象时,它通过实例调用render方法。想得到return的值,就得执行h1 onClick={demo()}今天天气很{this.state.isHot?" Hot": "cool" }/h1,执行到onClick赋值语句时,需要将demo()函数调用的返回值给onClick作为回调。demo()的返回值是undifend,也就是把undifend作为回调给onClick。* *这是错误的,因为在演示之后添加()会导致函数调用。* *单击时调用undifend,react处理这个过程。如果是undifend,就没有多余的动作。

写作中的常见错误

render() {

console.log('this:',this);

返回(

H1:今天的天气很热?热':'冷' }/h1

);

}

render() {

console.log('this:',this);

返回(

H1今天的天气很热?热':'冷' }/h1

);

}

正确的写作

!文档类型html

html lang='en '

meta charset='UTF-8' /

meta http-equiv=' X-UA-Compatible ' content=' IE=edge '/

meta name=' viewport ' content=' width=device-width,initial-scale=1.0' /

title react/标题

/头

身体

div id='test'/div

!-介绍核心库-

脚本src='./js/react . development . js '/script

!-扩展库-

脚本src='./js/react-DOM . development . js '/脚本

!-将jsx转换为js -

脚本src='./js/babel.min.js'/script

脚本类型='text/babel '

//1.创建一个组件

班级天气延伸反应。组件{

/**

*构造函数中可以接收的数据取决于新数据时传输的数据。

*新气象不是我们操作的,而是react操作的。

*/

施工员(道具){

//还没学过道具,但是需要。模仿官网的写法。

//类本身的语法

超级(道具);

//构造函数中的this指向构造函数实例对象

//16.8之前,状态为{},16.8之后,为null。

this.state={

isHot:没错,

};

}

//状态在Weather的实例对象上

render() {

console.log('this:',this);

返回(

h1 onClick={demo}

天气很冷。热':'冷' }

/h1

);

}

}

函数演示(){

Console.log('调用演示');

}

//2.将组件呈现到页面

ReactDOM.render(Weather /,document . getelementbyid(' test ');

/脚本

/body

/html

修改

数据已经渲染到上面的页面,现在想修改页面的数据。如果要修改数据,必须首先让isHot进入状态。先看一段错误写法:

函数演示(){

Console.log('调用演示');

//错误演示

const { isHot }=this.state

console.log('isHot ',is hot);

}

提示xxx of undefined(读' state '),即未定义的状态。当xxx未定义时,undefined.state将报告此错误。这里的Xxx指的就是这个。

来打印一下this

函数演示(){

//错误演示

console.log('this ',this);

const { isHot }=this.state

console.log('isHot ',is hot);

}

看看代码结构和注释。

通过打印找到,将自定义函数放到类的外边,数据虽然能够正确显示,但并不能拿到/修改state中的数据。

班级天气延伸反应。组件{

/**

*构造函数中可以接收的数据取决于新数据时传输的数据。

*新气象不是我们操作的,而是react操作的。

*/

施工员(道具){

//还没学过道具,但是需要。模仿官网的写法。

//类本身的语法

超级(道具);

/**

*这在构造函数中指向构造函数实例对象。

* 16.8之前,状态为{},16.8之后,为null。

*状态是在天气的实例对象上。

*/

this.state={

isHot:没错,

};

}

//切换天气

演示(){

console.log('this ',this);

const { isHot }=this.state

console.log('isHot ',is hot);

}

//渲染

render() {

console.log('this:',this);

返回(

h1 onClick={demo}

天气很冷。热':'冷' }

/h1

);

}

}

注意,类不是函数体,不需要写function

关于React对国家的理解的简要分析,本文到此为止。更多关于React state的了解,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • react脚手架配置webpack,react框架怎么学
  • react脚手架配置webpack,react框架怎么学,React脚手架搭建的学习
  • react常用组件及作用,react 组件传递数据
  • react常用组件及作用,react 组件传递数据,React组件间通信的三种方法(简单易用)
  • jquery瀑布流插件,react瀑布流插件
  • jquery瀑布流插件,react瀑布流插件,js原生瀑布流插件制作
  • ,,react路由守卫的实现(路由拦截)
  • ,,react 实现图片正在加载中 加载完成 加载失败三个阶段的原理解析
  • ,,React Native 真机断点调试+跨域资源加载出错问题的解决方法
  • react两种组件,react组件中必不可少的一个函数
  • react和vue的未来趋势,vue框架和react框架的区别
  • react 装饰器的使用教程,react装饰器有什么用
  • reactor模式详解,什么是reactor模式
  • react优先级调度,React的底层调度策略的名称
  • react 网络请求用什么,react 请求数据
  • 留言与评论(共有 条评论)
       
    验证码: