Javascript 当redux商店更新道具时,React组件不重新招标

Javascript 当redux商店更新道具时,React组件不重新招标,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,因此,我有一个导航组件,它呈现一个列表,导航树通过useEffect从服务器获取,并且道具被更新。 在我的redux存储中,我看到了正确的值,甚至当我对navTree道具执行console.log时,我首先会得到未定义的对象,然后是预期的对象,但是我的组件不会重新渲染 谁能解释一下我错过了什么 const Navigation = ({navTree, initializeNavigation}) => { const [initialized, setInitialized]

因此,我有一个导航组件,它呈现一个列表,导航树通过useEffect从服务器获取,并且道具被更新。 在我的redux存储中,我看到了正确的值,甚至当我对navTree道具执行console.log时,我首先会得到未定义的对象,然后是预期的对象,但是我的组件不会重新渲染

谁能解释一下我错过了什么

const Navigation = ({navTree, initializeNavigation}) => {

    const [initialized, setInitialized] = useState(false);

    useEffect(() => {
        if (!initialized) {
            initializeNavigation();
            setInitialized(true);
        }
    }, [initialized, initializeNavigation]);

    console.log(navTree);

    if (navTree) {
        return (
            <React.Fragment>
                {Object.keys(navTree).map(
                    key => {
                        console.log(key);
                        console.log(navTree);
                        if (navTree) console.log(navTree[key]);
                        return (
                            <List key={key}>
                                <ListItem>
                                    {key.toUpperCase()}
                                </ListItem>
                                <Divider/>
                                {navTree && navTree[key] && Object.keys(navTree[key]).map((entity) => (
                                    <ListItem button key={entity}>
                                        <ListItemText primary={entity.toUpperCase()}/>
                                    </ListItem>
                                ))}
                            </List>)
                    }
                )}
            </React.Fragment>
        );
    }
    return null;
};

const mapStateToProps = state => ({
    navTree: selectors.getNavTree(state)
});

const mapDispatchToProps = dispatch => ({
    initializeNavigation: () => dispatch(actions.buildNavigationTree())
});

export default connect(
    mapStateToProps,
    mapDispatchToProps
)(Navigation);
const导航=({navTree,initializeNavigation})=>{
const[initialized,setInitialized]=useState(false);
useffect(()=>{
如果(!已初始化){
初始化激活();
setInitialized(true);
}
},[初始化,初始化];
控制台日志(navTree);
如果(导航树){
返回(
{Object.keys(navTree.map)(
键=>{
控制台日志(键);
控制台日志(navTree);
if(navTree)console.log(navTree[key]);
返回(
{key.toUpperCase()}
{navTree&&navTree[key]&&Object.key(navTree[key]).map((entity)=>(
))}
)
}
)}
);
}
返回null;
};
常量mapStateToProps=状态=>({
navTree:选择器。getNavTree(状态)
});
const mapDispatchToProps=调度=>({
initializeNavigation:()=>调度(actions.buildNavigationTree())
});
导出默认连接(
MapStateTops,
mapDispatchToProps
)(导航);

您可以共享navTree对象的JSON吗?当我记录该对象时,我得到一个JSON,看起来像{system:{currency:{currency:/currency”},但当我执行JSON.stringify时,它返回以下字符串“{}”,这是我的redux存储{“systeem”中的JSON方式:{“currency”:/currency”}@当您更改存储时,是否调用了渲染函数中的J.Pip
console.log
?如果没有,你能显示代码或你的减缩器和选择器.getNavTree?你能给我们记录navTree对象吗?你能共享navTree对象的JSON吗?当我记录对象时,我得到一个JSON,看起来像这样{system:{currency:{currency://currency}},但当我做一个JSON.stringify时,它返回以下字符串“{}”这是json在我的redux存储{“systeem”:{“currency”:“/currency”}}@J.Pip是
console.log,它是在更改存储时调用的呈现函数中的吗?如果没有,请显示代码或减速机和选择器。getNavTree
?请给我们记录navTree对象好吗?