2016-02-09 76 views
4

認爲我知道這個問題的答案,而只是爲了確保:如何基於Redux狀態更改制作React組件setState()?

我希望有一個作出反應組件來調用this.setState()當Redux的狀態變化在一定條件下(比如,state.dataLoaded === true)。我應該以某種方式使用subscribe,還是這個水平太低,我應該用connect來映射狀態到道具?在這種情況下,我認爲這樣的事情是可以接受的:

componentWillReceiveProps(nextProps) { 
    if (nextProps.dataLoaded) { 
    this.setState({ 
     dataSource: this.state.dataSource.cloneWithRows(nextProps.posts) 
    }); 
    } 
} 

回答

10

您明確應當使用connect做到這一點。當redux的狀態改變時,將會生成新的道具並觸發componentWillReceiveProps

class MyComp extends React.Component { 
    componentWillReceiveProps(nextProps) { 
    if (nextProps.dataLoaded) { 
     this.setState({ 
     dataSource: this.state.dataSource.cloneWithRows(nextProps.posts) 
     }) 
    } 
    } 
} 

export default connect(
    state => ({ 
    dataLoaded: state.someStore.loaded 
    }) 
)(MyComp) 
相關問題