因此,我有一个呈现列表的Navigation组件,该导航树是通过useEffect从服务器获取的,并且更新了props。 在我的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);