如果你看过React的官方文档,就会对怎么给局部state赋值有一定的了解。如下代码:

class Test extends React.Component {
constructor(props) {
super(props);
this.state = {
    name:'李磊'
  };
// 为了在回调中使用 `this`,这个绑定是必不可少的
  this.handleClick = this.handleClick.bind(this);
}  handleClick(){
  this.setState({name:'王磊'});
 }
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>{this.state.name}.</h2>
     <button onClick={handleClick}>测试</button>
</div>
);
}
}

官方文档指出,如果你使用class组件并使用state、定义一些方法,那么需要注意以下3点:

  1. 需要在 class 构造函数 constructor中为 this.state 赋初值!
  2. 需要在 constructor中调用super(props),否则无法使用this.props;
  3. 在javascript中,class的方法默认不会绑定this, 如果你忘记绑定this.handleClick并把它传入了onClick,当你调用这个函数的时候this 的值是undefined

但是,你是不是也见过这样的代码,如下:

class Test extends React.Component {
state = {
name:'李磊'

};

  handleClick = ()=>{
    this.setState({name:'王磊'});
  }
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>{this.state.name}.</h2>
     <button onClick={handleClick}>测试</button>
</div>
);
}
}

它更简洁,不用以上注意以上三点,只要直接定义state对象中的变量即可(注意不是this.state)

这种写法叫做public class fields 语法Create React App 默认启用此语法。

一个简单的方法可以比较两者写法到底有什么不同,那就是使用babel的Try it out来验证下吧。为了output的代码更具可读性,所以我选择了es2016

可以放大页面看,图片不能看原图

第一种写法:

第二种写法:

对比babel转换后的代码可以看出,第二种写法其实state也是定义在了constructor中。

最新文章

  1. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}
  2. SASS 编译后去掉缓存文件和map文件
  3. List.Sort用法
  4. Hibernate之映射文件中索引及约束的使用
  5. [转]C程序内存区域分配(5个段作用)
  6. linux 命令 more
  7. 粵語/廣東話/Cantonese 資料/Material
  8. javascript 将多维数组转换为一维数组
  9. js基本框架
  10. Eclipse 中,web项目在Tomcat运行时填写不了Server name
  11. 201521123045 《Java程序设计》第5周学习总结
  12. BZOJ 3239: Discrete Logging [BGSG]
  13. 通过 UI 管理 docker
  14. Django JsonResponse与HttpResponse重要区别
  15. git [command line] fatal: Authentication failed for
  16. Eclipse 下载安装
  17. 在阅读sqlmap源码时学到的知识--检查运行环境
  18. 未能加载文件或程序集“Autofac, Version=3.4.0.0,
  19. 【openCV学习笔记】在Mac上配置openCV步骤详解
  20. 阿里云ECS centos7 支持IPv6

热门文章

  1. VC.VS版本&amp;VC版本&amp;OpenCV版本
  2. du 和 df命令
  3. Bootstrap手风琴悬浮下拉框,直接拷~~~
  4. 学习笔记:CentOS7学习之十五: RAID磁盘阵列的原理与搭建
  5. #【Python】【demo实验23】【练习实例】【 三人比赛顺序问题 】
  6. 【转帖】sysbench压力测试工具简介
  7. 报表工具ActiveReports开发实例——物联网智能供水云平台
  8. ideaIU-2019.2.exe-安装目录和设置目录结构的说明
  9. Vue中断axios请求-切换页面+重复请求
  10. 关于一些JS的运算符