是否可以在React中访问子组件的状态?

问题描述 投票:1回答:1

我正在一个项目中使用react(和redux)用Web应用程序替换大型Silverlight应用程序。用户可以在其间跳转的多个选项卡和子选项卡。

我们使用redux来保存tab / subtab-state。当前解决方案使用cloneElement注入先前的状态和所有组件需要调用以保存状态的函数(onSaveState)。

有没有办法避免在选项卡+子选项卡上的所有页面中保存/加载样板代码,例如通过获取子组件的状态?

一个丑陋的解决方案是保存整个组件(包括状态),但这会带来很多开销+使用反应虚拟DOM处理实际上未呈现的内容可能会导致其他一些问题。

注意:我们不允许更改整体用户体验。

更新:我们想要实现的是当用户在打开的选项卡之间跳转时,使状态的保存和加载尽可能简单。用户可以打开几个相同类型的选项卡。大多数选项卡都具有撤消功能。这是一个拥有150多个视图的大型应用程序(不包括所有较小的对话框)。为了使redux存储中的状态保存/加载尽可能无缝,最好只检查一个组件的状态(readonly)以保存它。我们今天有一个很好的解决方案,因为我提到了将previousState作为prop的地方,我们在componentWillUnmount上使用当前状态调用onSaveState。我不需要解释redux如何工作,我只是感兴趣,是否有可能从外部(例如从父组件)检查组件的状态,而不是hacky?

reactjs redux
1个回答
0
投票

如果您有复杂的保存/加载代码,请不要将它全部放在父组件中并将其注入子组件中。将其移动到孩子可以自己消费的共享文件中。

将加载代码放在reducer文件中。将保存代码放在操作文件中。然后让选项卡组件每个require新文件,以便他们可以connect到reducer和dispatch的动作。

有关详细示例,请参阅Redux Basics

© www.soinside.com 2019 - 2024. All rights reserved.