天天看點

react props && state

1.Props 的隻讀性 不能修改自身的 props

function sum(a, b) {
  return a + b;
}
           

這樣的函數被稱為“純函數”,因為該函數不會嘗試更改入參,且多次調用下相同的入參始終傳回相同的結果。

相反,下面這個函數則不是純函數,因為它更改了自己的入參:

function withdraw(account, amount) {
  account.total -= amount;
}
           

React 非常靈活,但它也有一個嚴格的規則:

所有 React 元件都必須像純函數一樣保護它們的 props 不被更改。

需特别注意,

this.props.children

是一個特殊的 prop,通常由 JSX 表達式中的子元件組成,而非元件本身定義。

2.元件中的 state 包含了随時可能發生變化的資料。state 由使用者自定義,它是一個普通 JavaScript 對象。

State 與 props 類似,但是 state 是私有的,并且完全受控于目前元件。

1).不要直接修改 State,而是應該使用

setState()

this.setState({comment: 'Hello'});
           

2).構造函數是唯一可以給

this.state

指派的地方

constructor(props) {
    super(props);
    this.state = {date: new Date()};
  }
           

3).State 的更新可能是異步的 ,是以你不要依賴他們的值來更新下一個狀态。并且出于性能考慮,React 可能會把多個

setState()

調用合并成一個調用。

解決異步問題可以

setState傳入對象

this.setState(function(state, props) {
  return {
    counter: state.counter + props.increment
  };
});