javascript - 使用 react-router 的无效挂钩调用 useSelector()
问题描述
我在 Redux 中为购物车工作。假设我有两个页面,并且想要将状态从购物页面传递到购物车/结帐页面。
我正在从此页面调用 useSelector,但我收到有关无效 Hook Call 的错误。
const CartPage = () => {
const selectedProducts = useSelector(
(state) => (state && state.products) || []
);
return (
<PageContainer>
This is the Cart Page
</PageContainer>);
};
export default CartPage;
而这个组件是这样由 react-dom-router 渲染的
<AppContainer>
<Navigation />
<Switch>
<Route exact path="/" render={WelcomePage} />
<Route path="/cart" render={CartPage} />
<Route path="/shopping" render={ShoppingPage} />
</Switch>
</AppContainer>
我从页面组件 ShoppingPage 中的组件存储状态。
useSelector 钩子仅在 react-router-dom 之外的组件内部工作。有没有办法获得这些组件之一的状态?
解决方案
编辑:不知何故,它在 Route 的 render 属性中使用回调来工作
这里是固定代码
<AppContainer>
<Navigation />
<Switch>
<Route exact path="/" render={() => <WelcomePage /> } />
<Route path="/cart" render={() => <CartPage /> } />
<Route path="/shopping" render={() => <ShoppingPage /> } />
</Switch>
</AppContainer>
推荐阅读
- javascript - 如果非NULL,则JS使用扩展运算符添加到数组 - 表达式语法
- amazon-web-services - Terraform InvalidVpcEndpointId.NotFound:vpcEndpoint ID 'vpce-XXXXXXXXX' 不存在
- python - Discord.py 反应菜单响应所有活动菜单上的反应
- c++ - 导致无效计数状态的 C++20 信号量使用问题
- java - 如何构建从另一个 DLL 调用函数的 JNI DLL?- JNI,摇篮
- c# - C# 父子往返 Close() 无法正常工作,但 Hide() 可以
- mule - 如何在Dataweave中将按小时分隔的连续日期组合在一起?
- r - geom_beeswarm 半图而不是对称
- maxima - 比较两个相等的列表元素时,Maxima 返回 false
- python - 在梁上绘制剪切图时出错