reactjs - 如何将 React 16.3 上下文提供程序与 redux 存储一起使用?

标签 reactjs redux react-redux react-16

我在一个代码库中工作,该代码库中有一堆 redux 已经用于管理和持久化状态,以及调度操作。我使用新的 Context API 的目标是摆脱我必须做的 prop-drilling,以将所有这些状态片段传递给各种组件,但保留用于在 redux 中管理状态的现有代码。

现在,我删除了过多的 prop 钻取代码,并将它们替换为上下文提供者和消费者,将它们连接到我的组件中所有正确的位置。我仍在向 redux 发送操作并获取填充我的 redux 存储的 API 响应,并且我想在 redux 存储的特定部分更新时以某种方式通知上下文进行更新。

我如何从 redux 商店获取更新并传送到我的不同提供商?

最佳答案

由于您使用的是新的 Context Api,因此您可以轻松地连接使用 Context Provider 的组件与 redux 存储并更新上下文值,例如

const Context = React.createContext();
class App extends React.Component {
   state = {
       user: ''
   }
   static getDerivedStateFromProps(nextProps, prevState) {
       if(nextProps.user !== prevState.user) {
          return {user: nextProps.user}
       }
       return null;
   }
   render() {
       return <Context.Provider value={this.state.user}>
           <MyComponent />
       </Context.Provider>
   }
}
const mapStateToProps(state) {
   return {
      user: state.user
   }
}
export default connect(mapStateToProps)(App);

关于reactjs - 如何将 React 16.3 上下文提供程序与 redux 存储一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50165171/

相关文章:

reactjs - 使用有状态组件绕过 redux 是一种不好的做法吗?

reactjs - Redux 表单handleSubmit : How to access store state?

javascript - React Native Router Flux 动态路由

javascript - 合并嵌套对象而不发生变异

javascript - 检测 redux 存储更改

javascript - Redux-form:在模式弹出时如何从 API 调用加载值(编辑模式)到表单?

javascript - redux-saga 中的 getState?

javascript - 使用历史推送响应路由器导航

reactjs - 我怎样才能准确匹配嵌套在 React 路由器 6 中的路由?

javascript - 将 Tailwind CSS 与 esbuild 结合使用 - 过程