【问题标题】:reactjs - how to tell a "distant" component to re-render?reactjs - 如何告诉“远处”组件重新渲染?
【发布时间】:2016-05-01 19:37:13
【问题描述】:

如果用户当前已登录,则在我的 Web 应用程序的右上角显示用户名,如果未登录,则显示“未登录”。该组件通过检查 redux 中的密钥来获取有关用户登录状态的信息。

用户通过访问登录表单登录。登录表单和右上角的登录状态是非常独立的组件,它们都是 reactjs 组件层次结构的独立分支。

一旦用户通过登录表单成功登录,我无法理解如何让右上角的登录状态重新呈现。

谁能建议我应该做什么?

【问题讨论】:

  • 向我们展示一些代码,但您似乎应该使用同一个 reducer 登录并存储登录用户的名称。

标签: reactjs


【解决方案1】:

不要考虑一个组件导致另一个组件重新渲染。 在您的商店发生更改后,您的组件应该重新渲染。它也不应该知道是什么做出了改变。

有几种方法可以监听商店的变化,最流行的是react-redux。它将允许您将要重新渲染的组件包装在一个连接的容器中,该容器了解您的商店并依赖于它的一些数据。

当你的容器关心的数据片段发生变化时,它会重新渲染其中的 React 组件。

  1. <SignInForm /> 调度一个动作。
  2. 您的一个 reducer 计算一个新状态。
  3. 您的 <TopRightLoginBar /> 容器重新渲染。

【讨论】:

  • 知道如何在不使用 Redux 的情况下做到这一点吗?
  • 许多杂乱无章的组件上下传递事件处理程序,或者使用全局事件发射器。不过,值得记住的是,存在 Flux 架构是因为这些选项都不是特别好。
猜你喜欢
  • 2023-04-11
  • 2020-06-20
  • 2019-01-01
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2022-11-25
相关资源
最近更新 更多