【发布时间】:2017-07-19 12:22:17
【问题描述】:
在我的应用程序中,我使用了几个 Container 组件。在每个Container中,都有Buttons。
根据应用程序的state,Buttons 可点击(或不可点击)。 Button 是否被禁用,在每个 Container 的本地state 中进行管理。
可以保存和加载应用程序的结果和状态。
问题来了:
当我保存(或加载)应用程序时,很难从 每个 Container 中“提取”Buttons 的state。在全局 state (Redux) 中保存是相当容易的。
但是如何从每个 Container 和保存本地state,如何将其反馈给每个Container?
读取本地state 是通过父Component 管理的,它从子Component 调用方法。我知道这是一种反模式,但它确实有效。
export class SomeConmponent {
....
onClickSaveProjecthandler(event) {
const localStateProjectSettings = this.childProjectSettings.getLocalState();
const localStateLayerFilter = this.childLayerFilter.getLocalState();
return {
"ProjectSettings": localStateProjectSettings,
"Filter": localFilter
};
}
render() {
return(
<ProjectSettingsContainer onRef={ref => (this.childProjectSettings = ref)}/>
)
}
}
有更好的建议吗?
【问题讨论】:
-
你已经提到了redux;为什么不使用它而不是本地状态?
-
»我知道这是一种反模式,但它确实有效。« 显然没有,看看您是如何面对这个问题的。
-
@IngoBürk 我不想使用
redux,因为是否将按钮变灰是应该在component/container中完成的事情。无需重新渲染整个站点,只需将按钮变灰(当我使用redux时会发生这种情况!)
标签: javascript reactjs redux state