将setState用于外部UI组件?

时间:2016-10-06 18:02:00

标签: reactjs react-native redux

我是新手,我现在正在使用本机反应。我正在尝试创建一个与我的状态管理库分离的组件,无论是redux还是flux,我打算最终公开分享它。我的问题源于我目前正在使用redux,但组件本身正在使用this.statethis.setState来维持其内部状态,这看起来像一个反模式,并且渲染似乎不工作。所以我的问题是,如何创建一个不依赖于redux,flux等的隔离组件,但是能够保持内部状态?第三方组件通常如何做到这一点?

1 个答案:

答案 0 :(得分:1)

我不认为使用组件的状态(this.state)是一种反模式。实际上,我认为这是组件维护/更新其自身内部状态的正确方法。您需要注意的唯一事情是更改组件的状态(使用this.setState)将触发再次调用render()。如果您想要更新状态但是希望再次渲染组件,那么您应该覆盖并正确实现组件的shoudComponentUpdate(nextProps, nextState)函数。

组件更新其状态的原因有很多。例如,我有一个render()函数的组件与此类似:

render() {
    if (this.state.networkError) {
        return <ErrorView />
    } else if (this.state.isLoading) {
        return <Spinner visible={true}/>
    } else {
        return <Text>Success</Text>
    }
}

因此,基于其当前状态,组件呈现相应的子组件。