当 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);