reactjs - react : how to remount a sibling component to re-run componentDidMount?

标签 reactjs redux

在我的应用程序中,一个用户有多个......比方说“狗”。当前选定的狗出现在标题中,并且可以通过标题的下拉菜单进行更改。选择新狗后,它会在后端将其标记为 primary: true,然后我会更新相应的标题 UI。从那时起,对后端的所有请求都会返回primary狗的结果。

我有一个 Layout.jsx 组件,如下所示:

<Header />
<div>
  {this.props.children}
</div>

this.props.children 中,我为多个不同的资源渲染一个索引页面,即子组件的示例可能是发出网络请求的 TreatsContainercomponentDidMount/treats 中,结果在我的布局中呈现。

我面临的问题是,当用户在 header 组件中更改他们的狗时,我希望其他组件重新运行他们在 componentDidMount 中发出的相同网络请求,这样就可以显示新选择的狗的数据。我在应用程序中的几个位置实现了 Redux,但我不想将所有数据存储在全局状态树中,因为用户可以创建的资源数量没有限制。我的意思是我不想要来自 /treats/toys/foods 等的所有数据。数组。处理这种情况的好方法是什么?

最佳答案

我不确定我是否完全理解您的问题,但我仍会尽力回答。据我了解,您有一个设置主狗Header组件。并且您希望子组件在该主狗发生更改时从后端获取新数据。

我实现这一目标的方法是

  1. 将当前的主要狗存储在Redux存储中,并在它发生变化时在Header组件中触发一个操作来更新它。
  2. 在每个子组件中,使用 mapStateToProps 从存储中访问 primarydog 作为 props
  3. 在每个子组件中,当 this.props.primaryDog != nextProps.primaryDog 时,调用后端以获取 componentWillReceiveProps 中的相关数据

关于reactjs - react : how to remount a sibling component to re-run componentDidMount?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46611098/

相关文章:

reactjs - EmotionJS 组件库中的组件未收到 Theme 属性

javascript - React - 文件导入

reactjs - 在 React Bootstrap 中更改扩展的 Accordion 面板的标题样式

java - React 应用程序不向 java 服务器发送 header

javascript - componentDidMount 或 componentWillMount 我需要使用哪一个

reactjs - 在另一个 TypeScript 组件中引用 React-Redux TypeScript 组件会导致 "no export member"错误

javascript - componentDidUpdate 中的先前状态和当前状态相等

javascript - 获取本地存储值并在 redux 中切换存储

reactjs - React Redux 导出默认有 2 个函数

javascript - Redux——繁重的工作应该在哪里发生——reducer、action、容器还是表示组件?