state的注意点

 1 import React from "react";
 2 
 3 class App extends React.Component {
 4   constructor(props) {
 5     super(props);
 6     this.state = {
 7       count: 1
 8     }
 9   }
10   render() {
11     return (
12       <div>
13         {this.state.count}
14         <button onClick={() => this.myFn()}>btn</button>
15       </div>
16     )
17   }
18   myFn = () => {
19     this.setState({
20       count: this.state.count + 1
21     })
22   }
23 }
24 
25 export default App;
  • 修改  this.state 中的值必须通过  this.setState 函数来修改
  • 默认情况下  this.setState({count: this.state.count + 1}) 是异步的, React 会收集一段时间的依赖然后一次性更新,目的是优化性能
  • 如果需要拿到更新后的值,可以在 this.setState 第二个参数中获取  this.setState({ count: this.state.count + 1 }, () => { console.log(this.state.count); }); 
  • 如果  this.setState 在定时器或原生事件中则是同步执行的

this.setState 用法

1 this.setState({
2       count: this.state.count + 1
3     }, () => {
4       console.log('数据更新完毕了 可以在这里拿到更新后的值');
5       console.log(this.state.count);
6     })
  • 需要在  this.setState 的第二参数中在能拿到更新后的值,十分不方便
1 this.setState((prevState, props) => {
2   return {count: prevState.count + 1}
3 });
  • 给  this.setState 传递一个函数,该函数的第一个参数就是上一次  this.setState 更新之后的值
posted @ 2021-11-25 21:15  霸哥yyds  阅读(38)  评论(0)    收藏  举报