2017-04-13 70 views
1

將映射stateProps變成constructorStates是不好的做法嗎?在Redux中將狀態映射到道具

爲了使我的問題更清楚她是一個例子:

//some class 
    constructor(props) { 
    super(props); 
    this.props.getMessages(1)  
    this.state = { 
     messages: this.props.messages 
    }; 
    } 

function mapStateToProps(state) { 
    return { 
    messages: state.messages 
    }; 
} 

在上面的例子,我知道我可以使用this.props.messages原始的風格,但我看到一些例子,讓道具進入狀態。

另一個例子,我從代碼筆有:

constructor(props) { 
    super(props); 
    this.state = { 
     step: props.initialStep, 
     count: props.initialCount  
    };  
    } 

Counter.propTypes = { initialCount: React.PropTypes.number }; 
Counter.defaultProps = { initialStep: 5, initialCount: 0 }; 

那麼,什麼是差異化道具的狀態,當你有些人試圖做道具的狀態的呢?

回答

2

只有當你想從全局狀態中分離本地狀態時,你才應該這樣做。

例如,如果您製作表單,您不希望商店更新時替換值。

一般情況下,不要將道具複製到狀態。這是一個常見的錯誤來源。其中一個不太明顯的錯誤是組件裝載時狀態可能不存在,例如,如果你從http api獲取它。

0

思考Redux的一種方法是它包含並管理整個應用程序的狀態。你的組件應該僅僅反映這個狀態,而不是直接改變它,這就是爲什麼你想把它放到你的道具中。如果你的組件需要保持一些額外的狀態,那麼你可以直接使用state,而不用擔心通過Redux傳遞它。

相關問題