react 学习笔记

1、JSX当中可以插入JavaScript表达式,表达式返回的结果会相应的渲染到页面上

  表达式用{ }包裹,在这个里面,可以放变量、表达式计算、函数、JSX等,render会把这些代码返回的内容如实的渲染到页面上

  表达式不仅可以用在标签的内部,也可以用在标签的属性上

  如果表达式里面插入返回null,那么react.js会什么都不显示,相当于忽略了该表达式插入

2、在JSX中,类名要用className,for属性要用htmlFor

3、一个组件类必须要实现一个render方法,这个render方法必须要返回一个JSX元素,并且系需要用一个外层的JSX元素把所有的内容包裹起来,返回多个并列的JSX元素是不合法的

4、自定义的组件都必须用大写字母开头,普通的HTML标签都用小写字母开头

5、事件监听

  (1)给需要监听的元素加上属性onClick、onKeyDown这样的属性,然后等号后面跟着一个表达式插入{this.fn}

  (2)React.js不需要手动调用浏览器原生的addEventListener进行事件监听,它帮我们封好了一系列的on*的属性,没经过特殊处理的话,这些on*的事件监听只能用在普通的HTML的标签上,不能用在组件的标签上

  (3)和普通浏览器一样,事件监听函数会自动传入一个event对象,这个对象和普通浏览器event对象所包含的方法和属性基本一致,不同的是React.js中的event对象并不是浏览器提供的,而是他自己内部所构建的,

  (4)一般在某个类的实例方法里面的this指的是这个实例本身,但是如果在类似点击事件(fn)的方法中把this打印出来,会看到this是null或者undefined,如果想要事件函数中使用当前的实例,需要手动将实例方法bind到当前的实例上在传给Reat.js({this.fn.bind(this)}) 

  (5)如果在事件函数中,要连续调用函数的时候,可以这样使用({() => { this.fn(); this.fn1(); }})

6、组件的state和setState方法

       (1)当我们调用setState这个函数的时候,React.js会更新组件的状态state,并且重新调用render方法,然而在把render方法所渲染的最新内容显示到页面上。并且,需要注意的是,当我们要改变组件的状态的时候,不能直接用this.state=***这种方式来修改,如果这样做的话,React.js就没有办法知道你修改了组件的状态,它就没办法更新到页面,所以,一定要使用React.js提供的setState方法,它接受一个对象或者函数作为参数

  (2)React.js的setState会把修改的状态缓存起来,稍后才会更新到state上

  (3)当使用的setSate需要依赖前一个的setState的结果做后续操作的话,setState可以接受一个函数作为参数

  

  (4)在使用 React.js 的时候,并不需要担心多次进行 setState 会带来性能问题,因为在 React.js 内部会把 JavaScript 事件循环中的消息队列的同一个消息中的 setState 都进行合并以后再重新渲染组件

7、配置组件的props

  (1)就像HTML标签一样,可以把参数放在表示组件的标签上,组件内部就可以通过this.props来访问这些配置参数了

  (2)以上方法默认配置是通过||操作符来实现,所以在React.js提供了一种方式defaultProps,可以方便的做到默认配置。使用的时候,就不需要在this.props上在做判断了

  

  (3)props 一旦传入,你就不可以在组件内部对它进行修改。但是你可以通过父组件主动重新渲染的方式来传入新的 props,从而达到更新的效果。

  

8、state和props的分别

  (1)state中状态可以通过 this.setState 方法进行更新,setState 会导致组件的重新渲染

  (2)props组件内部无法控制也无法修改。除非外部组件主动传入新的 props,否则组件的 props 永远保持不变

  (3)state 是让组件控制自己的状态,props 是让外部对组件自己进行配置

  (4)尽量少地用 state,尽量多地用 props

  (5)没有 state 的组件叫无状态组件,设置了 state 的叫做有状态组件,状态管理会带来管理的复杂性,所以尽量多写无状态组件

原文地址:https://www.cnblogs.com/qzccl/p/7827557.html