javascript - ReactJS 中的多个上下文
问题描述
对于我的在线商店,我需要使用 3 个 React 上下文:
- Authentication Context 检查是否经过用户身份验证,然后将布尔值 isAuth 保存为状态,并具有登录和注销功能。
- 最喜欢的产品上下文
- 购物车上下文
此外, Favorite Products 上下文和Shopping Cart 上下文需要使用Authentication Context,因为未经身份验证的用户可以将产品添加到购物车,然后在单击“结帐”后能够注册。
其他页面和组件也需要访问这些上下文。
在购物车上下文中使用身份验证上下文的原因是,如果用户通过身份验证,购物车将存储在数据库中,如果用户未通过身份验证,则存储在 cookie(或状态)中
问题是它Context Consumer
仅适用于render()
但我需要在生命周期函数中使用上下文,例如ComponentDidMount()
我自己的函数。
最近发现了“ with-context ”npm-library,觉得可以解决问题。
结合所有这些上下文的正确方法是什么?
解决方案
你需要这样的东西:
class B{
}
const A = props => (
<Consumer>
{context => <B {...props} context={context} />}
</Consumer>
);
export default A;
这里 B 类的所有生命周期方法都将访问上下文
推荐阅读
- javascript - 当我在javascript中有一个对象时如何创建二维数组?
- sql - 删除满足一个条件的所有记录
- r - 传递给函数时没有适用的 tibble 方法
- tcp - TCP检测到丢包后是否还发送新的数据包
- python-3.x - 获取所有可能的组合键 --- 值
- python - 反向解码base45
- javascript - 为什么 Sonar 在 mocha 测试中发现认知复杂性问题?
- javascript - 使用 javascript 的 Strapi 日期格式
- c# - 我需要将数据从主进程嵌入到 Roslyn 编译器
- javascript - 如何使用 PerfectScrollbar 滚动到特定元素?