【问题标题】:Sharing state between all instances of same component?在同一组件的所有实例之间共享状态?
【发布时间】:2016-06-10 11:42:09
【问题描述】:

我有一个工具提示组件,当悬停时会显示一个简单的工具提示。

当您mouseLeave 组件时,setTimeout 会触发,当它结束时,工具提示将关闭 (setState({ open: false }))。

现在我想添加一种行为来反映本机操作系统工具提示之一:

当您mouseLeave 一个工具提示,但立即mouseEnter 另一个工具提示时,之前的工具提示会立即关闭,而新的工具提示会打开。

为此,我需要在 Tooltip 组件的所有实例之间共享状态。我可以使用 Redux,但对于一个如此简单的任务来说似乎有点矫枉过正(我需要一个与商店交互并提供操作和属性的容器)。

有更简单的解决方案吗?

【问题讨论】:

  • 最易于维护的方法是使用通量方法。 Redux 不是唯一的选择,但我认为这并不过分。如果您需要全局状态,请使用为处理它而构建的工具。

标签: reactjs


【解决方案1】:

在 ReactComponent 之间共享信息的最佳方式是 Flux 架构。 Redux 就是其中之一。

更简单的选择是使用browser native storage 用于存储临时信息:它类似于全局变量,但具有特定的范围和持续时间定义。

【讨论】:

    【解决方案2】:

    将共享状态移动到所有Tooltips的父组件的state,让这个父组件定义一个方法setWhatever来设置值,并通过属性将该方法传递给Tooltip组件。这样,孩子们可以在需要更改状态时调用他们的 setWhatever 属性,这实际上是他们父母的属性。

    【讨论】:

    • 这不是一个解决方案,这个组件将在整个应用程序中使用。您的方法会使代码难以维护。
    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2019-02-18
    相关资源
    最近更新 更多