We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
尽可能的往this.setState里传递一个函数而不是一个对象 this.setState是异步的,不要指望它会立即映射为新的值、 在事件处理函数是异步的,这样可以确保性能 往setState传递一个函数会保证里面的state为最新的
this.setState((prevState) => ({ // [...arr] 扩展运算符,生成新数组,加入后面的心智inputvalue list: [...prevState.list, prevState.inputValue], inputValue: '' //清空输入框里的值 }))
使用 PropTypes 进行类型检查
当一个组件的state或者props发生改变的时候的,render函数就会被重新执行
如果每次改变页面结构的时候都去改变DOM的时候,会非常消耗性能,
优点:
diff算法 原则是数据发生改变,虚拟DOM发生改变 会调用setState方法,这也就是为什么setState会是一个异步的方法。 如果有三次setState,就会把这三次改变合并起来,做一次改变。
同级比较的(同层虚拟DOM比较) 只比较一次,如果在第一层比较出差异,接下来的层数就不需要比较了,直接进行替换。
key值比对(虚拟DOM)
每个DOM节点都带有一个key,用对应的key进行相互的DON比较,也是diff算法的一部分
指某一个时刻组件会自动执行的函数
The text was updated successfully, but these errors were encountered:
No branches or pull requests
React学习
Fragment占位符 不需要在外层在包裹一个额外的div标签
react原则上不允许在最外层出现多个同级的标签,而在外面在包裹一层会显得多余,Fragment可以解决
尽可能的往this.setState里传递一个函数而不是一个对象
this.setState是异步的,不要指望它会立即映射为新的值、
在事件处理函数是异步的,这样可以确保性能
往setState传递一个函数会保证里面的state为最新的
使用 PropTypes 进行类型检查
当一个组件的state或者props发生改变的时候的,render函数就会被重新执行
虚拟DOM
如果每次改变页面结构的时候都去改变DOM的时候,会非常消耗性能,
React.createElement('div', {}, 'item')
JSX -> 虚拟DOM(JS 对象) -> 真实的DOM
优点:
diff算法
原则是数据发生改变,虚拟DOM发生改变
会调用setState方法,这也就是为什么setState会是一个异步的方法。
如果有三次setState,就会把这三次改变合并起来,做一次改变。
同级比较的(同层虚拟DOM比较)
只比较一次,如果在第一层比较出差异,接下来的层数就不需要比较了,直接进行替换。
key值比对(虚拟DOM)
每个DOM节点都带有一个key,用对应的key进行相互的DON比较,也是diff算法的一部分
尽量都放在componentDidMount里使用
因为这个函数只会调用一次,且没有任何副作用,其实放在componentWillMount和construcrot里也是可以的,但并不会保证无副作用
更好的使用react动画效果
生命周期函数
指某一个时刻组件会自动执行的函数
老版本的生命周期函数
在constructor里初始化的数据
注: 这两种都只是在组件第一次渲染的时候执行,数据的更新不会影响他们的变化
注:如果shouldComponentUpdate返回true,则执行componentWillUpdate 否则,接下来的生命周期都不会被执行
产生条件:
一个组件要从父组件接受参数
只要父组件的render函数被重新执行,子组件的这个生命周期函数函数就会被执行
接下来的步骤同于state数据的更新
新版本的生命周期函数
getDerivedStateFromProps函数
会在调用 render 方法之前调用,并且在初始挂载及后续更新时都会被调用
性能优化
The text was updated successfully, but these errors were encountered: