# 状态 - State
# State 的更新可能是异步的
和 Vue 的异步更新队列一样, React 的 state 也不一定会同步更新. 这个时候, 使用 state 来更新 state 就不能做到及时更新.
this.state = { count: 10 }; this.setState({ count: this.state.count + 1 }); // 可能会异步更新
Copied!
1
2
3
4
5
6
7
2
3
4
5
6
7
为了解决这个问题, setState()就不接受一个对象而是函数了:
this.setState((state, props) => { return { count: state.count + props.xxx }; });
Copied!
1
2
3
4
5
2
3
4
5
第一个参数表示更新前的 state, 第二个参数就是传入的 props.
# state 合并更新
this.state = { a: 1, b: 2 } componentDidMount(){ this.setState({ b: 22 }) } // state: {a: 1, b: 22}
Copied!
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
setState()
只会更新传入的 state 的部分, 不会更改其他的 state.