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