当 redux store 发生变化时,组件不会重新渲染
Component wont re-render when changes happens to redux store
我在将 Redux saga 与 React Hooks 结合使用时遇到问题。它清楚地指出 useSelector() 将订阅 Redux 存储,并且 运行 选择器每当一个动作被调度时。
这是我正在尝试更新的组件:
import React from 'react';
import { useSelector} from "react-redux";
const InfoPage = () => {
const summoner = useSelector(state => state.summoner);
const loading = useSelector(state => state.loading);
console.log(loading,summoner) {*/Both undefined and only gets called once*/}
if(!summoner){
return <div>Loading...</div>
}
return(
<div>
{summoner.name}
</div>
)
}
export default InfoPage;
当我分派获取 "summoner" 的操作时,通过 history.push('/infopage') 调用该组件,当成功设法获取召唤师时,它再次分派另一个操作。如果我理解正确,这应该会重新呈现我的信息页面。
我的 redux 存储在获取后有值,但 InfoPage 不会重新呈现,这是最后的状态:
这也是我的减速器
我发现了问题...我忘记了我的 saga reducer 在导出时被称为 "saga"。所以为了解决这个问题我不得不改变:
const summoner = useSelector(state => state.summoner);
至
const summoner = useSelector(state => state.saga.summoner);
我在将 Redux saga 与 React Hooks 结合使用时遇到问题。它清楚地指出 useSelector() 将订阅 Redux 存储,并且 运行 选择器每当一个动作被调度时。
这是我正在尝试更新的组件:
import React from 'react';
import { useSelector} from "react-redux";
const InfoPage = () => {
const summoner = useSelector(state => state.summoner);
const loading = useSelector(state => state.loading);
console.log(loading,summoner) {*/Both undefined and only gets called once*/}
if(!summoner){
return <div>Loading...</div>
}
return(
<div>
{summoner.name}
</div>
)
}
export default InfoPage;
当我分派获取 "summoner" 的操作时,通过 history.push('/infopage') 调用该组件,当成功设法获取召唤师时,它再次分派另一个操作。如果我理解正确,这应该会重新呈现我的信息页面。
我的 redux 存储在获取后有值,但 InfoPage 不会重新呈现,这是最后的状态:
这也是我的减速器
我发现了问题...我忘记了我的 saga reducer 在导出时被称为 "saga"。所以为了解决这个问题我不得不改变:
const summoner = useSelector(state => state.summoner);
至
const summoner = useSelector(state => state.saga.summoner);