【发布时间】:2021-10-15 15:59:16
【问题描述】:
我在网上找不到解决方案,我一直在网上学习教程,这似乎是更新我的商店然后检索更新值的正确方法,但它不起作用。
这是我的代码:
我的行动
dispatch({type: 'RESPONSE_TIME'})
我的减速器
case "RESPONSE_TIME":
const newState = {
...state,
filters: {
...state.filters,
response_time: '12',
}
}
return newState;
我的看法
const filters = useSelector(state => state.ad.filters);
useEffect(() => {
console.log('look', filters.response_time)
}, [filters.response_time])
我的问题是过滤器值在我看来没有更新,即使当我检查减速器内部的状态时,它也已更新。
【问题讨论】:
-
这是有道理的,因为你的状态看起来像这样:state.filters.response_time 所以它可能应该是 state.filters.ads
-
是的,但是如果每次使用 dispatch 你设置
response_time到12redux 状态不会更新,useEffect将永远不会被触发...... -
@GiovanniEsposito 它的初始值为'all',所以当我第一次将它设置为'12'时它应该最少重新渲染。
-
我同意你的看法。当然,这个第一次设置应该来自一个在调用调度之前已经在
useSelector中读取all值的组件。你验证了吗?将response_time放入html:你应该看到all。然后单击发送更改的按钮。您现在应该看到12。你能做这个测试吗? -
@GiovanniEsposito 我已经进行了很多次测试,它确实显示了所有内容,第一次渲染但它不会重新渲染,这就是我发表这篇文章的原因。
标签: reactjs react-native redux react-redux react-hooks