Reactjs 对外部UI组件使用setState?
我对react相当陌生,目前正在使用react native。我试图创建一个与我的状态管理库分离的组件,无论是redux还是flux,最终我可以公开共享它。我的问题源于这样一个事实,即我目前正在使用redux,但组件本身正在使用Reactjs 对外部UI组件使用setState?,reactjs,react-native,redux,Reactjs,React Native,Redux,我对react相当陌生,目前正在使用react native。我试图创建一个与我的状态管理库分离的组件,无论是redux还是flux,最终我可以公开共享它。我的问题源于这样一个事实,即我目前正在使用redux,但组件本身正在使用this.state和this.setState来保持其内部状态,这看起来像是一种反模式,渲染似乎不起作用。所以我的问题是,如何创建一个不依赖redux、flux等的独立组件。。但能维持内部状态吗?第三方组件通常是如何做到的?我不认为使用组件的状态(this.state)
this.state
和this.setState
来保持其内部状态,这看起来像是一种反模式,渲染似乎不起作用。所以我的问题是,如何创建一个不依赖redux、flux等的独立组件。。但能维持内部状态吗?第三方组件通常是如何做到的?我不认为使用组件的状态(this.state
)是一种反模式。事实上,我认为这是组件维护/更新其自身内部状态的正确方式。唯一需要注意的是,更改组件的状态(使用this.setState
)将触发再次调用render()
。如果您想更新状态,但不想再次渲染组件,则应覆盖并正确实现组件的shoudComponentUpdate(nextrops,nextState)
功能
组件更新其状态的原因有很多。例如,我有一个组件具有类似以下内容的render()
函数:
render() {
if (this.state.networkError) {
return <ErrorView />
} else if (this.state.isLoading) {
return <Spinner visible={true}/>
} else {
return <Text>Success</Text>
}
}
render(){
if(this.state.networkError){
返回
}else if(this.state.isLoading){
返回
}否则{
回归成功
}
}
因此,基于其当前状态,组件渲染相应的子组件