Javascript 当redux商店更新道具时,React组件不重新招标
因此,我有一个导航组件,它呈现一个列表,导航树通过useEffect从服务器获取,并且道具被更新。 在我的redux存储中,我看到了正确的值,甚至当我对navTree道具执行console.log时,我首先会得到未定义的对象,然后是预期的对象,但是我的组件不会重新渲染 谁能解释一下我错过了什么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]
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.Pipconsole.log
?如果没有,你能显示代码或你的减缩器和选择器.getNavTree?你能给我们记录navTree对象吗?你能共享navTree对象的JSON吗?当我记录对象时,我得到一个JSON,看起来像这样{system:{currency:{currency://currency}},但当我做一个JSON.stringify时,它返回以下字符串“{}”这是json在我的redux存储{“systeem”:{“currency”:“/currency”}}@J.Pip是console.log,它是在更改存储时调用的呈现函数中的吗?如果没有,请显示代码或减速机和选择器。getNavTree
?请给我们记录navTree对象好吗?