Props
当 React 元素为用户自定义组件时,它会将 JSX 所接收的属性(attributes)以及子组件(children)转换为单个对象传递给组件,这个对象被称之为 “props”。
props 是组件的入参,不可更改
注意:组件可以接受任意 props,包括基本数据类型,React 元素以及函数。
State
React 把组件看成是一个状态机(State Machines)。通过与用户的交互,实现不同状态,然后渲染 UI,让用户界面和数据保持一致。
React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。
- 不要直接修改 State
构造函数是唯一可以给this.state
赋值的地方。更新 state 使用setState()
this.state = {count: 0}
this.setState({count: 1});
- State 的更新可能是异步的
因为 this.props 和 this.state 可能会异步更新,所以你不要依赖他们的值来更新下一个状态。
要解决这个问题,可以让 setState() 接收一个函数而不是一个对象。这个函数用上一个 state 作为第一个参数,将此次更新被应用时的 props 做为第二个参数 (箭头函数、普通函数都可以)
this.setState((state, props) => ({
counter: state.counter + props.increment
}));
- State 的更新会被合并
state 中多个独立的变量,可以分别调用setState()
来单独地更新它们,当调用setState()
的时候,React 会把你提供的对象合并到当前的 state。
数据是向下流动的
网友评论