使用props来反应getInitialState

fla*_*zoo 10 reactjs

当设置组件的初始状态时,使用通过props传入的数据,我应该创建一个新对象,做类似......

getInitialState: function () {
    return {
        fieldData: JSON.parse(JSON.stringify(this.props.data))
    };
}
Run Code Online (Sandbox Code Playgroud)

或者只是做...

getInitialState: function () {
    return {
        fieldData: this.props.data
    };
}
Run Code Online (Sandbox Code Playgroud)

小智 7

将道具转移到组件的状态被认为是一种不好的做法:http: //facebook.github.io/react/tips/props-in-getInitialState-as-anti-pattern.html

最好考虑采用不同的方法.您可以直接访问道具,并在更改道具时更新组件.

  • 获得初始状态是可以接受的:"但是,如果你明确表示同步不是这里的目标,那么这不是反模式:" (4认同)
  • 为什么uiexplorer的例子在反应原生代回购中做到了这一点? (2认同)
  • @KennethWorden per [this Q/A](http://stackoverflow.com/questions/28785106/reactjs-why-is-passing-the-component-initial-state-a-prop-an-anti-pattern):"将初始状态作为prop传递给组件是一种反模式,因为getInitialState方法仅在组件第一次呈现时被调用.从不更多.这意味着,如果重新呈现该组件传递不同的值作为prop,组件不会相应地做出反应,因为组件将在第一次渲染时保持状态.这非常容易出错." (2认同)