React学习笔记2

1.render函数对于props和state必须是纯函数

render函数不能改变props和state的属性,如果在render中调用setState则会陷入死循环
问题容易出现在事件绑定中onClick={this.handleClick(event)},这个函数就会直接执行,可能会修改state或props,此时应该使用箭头函数onClick={()=>this.handleClick(event)}

2.受控组件和非受控组件

  • 受控组件
    每当表单的状态变化时,都会被写入到组件的state中,消除了组件的局部状态,由组件的state来统一管理
  • 非受控组件
    一个表单组件没有value属性,可以通过defaulValue设置默认值,需要使用ref props来访问DOM元素,如果ref访问的是自定义组件,则返回的是组件的实例,可以通过findDOMNode来获取DOM元素
    受控组件必须要绑定change事件,否则无法将输入值改变组件state

3.CSSModule

  • 样式默认局部
    默认样式是局部的,也就是
:local(.normal){
}

全局样式可以定义为

:global(.btn){
}
:global{
}
  • CSS Modules只会转变类选择器

4.React Router Redux

  • 业务逻辑和路由状态有很强的关联关系,所以需要用redux来管理路由的状态
  • 对Router组件来说,Router组件是一个方法,location作为参数,返回的结果就是View视图,它会根据当前url的不同,渲染出不同的组件
  • 路由切换方式主要有pushState和hashChange两种方式
  • Redux中要改变数据,必须分发一个action,在路由改变的时候,也要分发一个相应的action,由相应的中间件来处理这一类的action,同时改变store中的状态

你可能感兴趣的:(React学习笔记2)