reactjs - 如何将 React 16.3 上下文提供程序与 redux 存储一起使用?
问题描述
我在一个代码库中工作,该代码库已经有一堆 redux 用于管理和持久化状态,以及调度操作。我使用新的 Context API 的目标是摆脱将所有这些状态传递给各种组件而必须做的道具钻探,但保留现有代码以在 redux 中管理状态。
现在我已经删除了过多的道具钻取代码,并用上下文提供者和消费者替换它们,将它们连接到我的组件中所有正确的位置。我仍在向 redux 发送操作并获取填充我的 redux 存储的 API 响应,并且我想以某种方式通知上下文以在 redux 存储的特定部分更新时进行更新。
我如何从 redux 商店获取更新,并将其发送到我的不同 Providers?
解决方案
由于您使用的是新的 Context Api,因此您可以轻松地connect
使用Context Provider
with 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);
推荐阅读
- python - 无法在 python 中使用字符串格式获得所需的输出
- swift - Swift 和 Firebase 中的多个 if let 语句
- python - 为什么 Anaconda/JupyterLab 找不到 guidata?
- php - 如何在选择选项 Ajax get 方法上重新加载页面
- python - 将 1OCT20 转换为日期时间
- oracle - 如何将提取的 ORACLE CLOB 加载到 Postgres 中的仅 1 个 TEXT 列中?
- flutter - Flutter:升级 Flutter 和 Channel 后无法再构建应用程序
- docker - 在 Docker 中创建 conda 环境失败
- javascript - 如何使用 sass @use 和 webpack sass-loader
- python - Qt Creator - Qt Quick:行:1:Qt Quick 仿真层崩溃