从Redux存储更新道具时,React组件未重新渲染

时间:2019-05-16 14:15:12

标签: javascript reactjs redux react-redux

因此,我有一个呈现列表的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);

0 个答案:

没有答案