将异步初始状态传递给useReducer并返回未定义

时间:2020-07-03 08:24:47

标签: javascript reactjs react-redux react-hooks

我正在父组件和VersionContainer中获取异步数据,我想像initialState一样使用它并传递给上下文提供程序。但是,当我以这种方式执行此操作时,ContentVersionProvider中的值是未定义的。有什么问题吗?

const VersionContainer: React.FC<IProps> = ({ data }) => {
    const initialState: Partial<IVersionHistoryContext> = data;
    const [state, dispatch] = useReducer(versionReducer, initialState);
    return (
        <ContentVersionsProvider value={dispatch}>
            <ContentVersionProvider value={state}>
                <div className="row">
                    <div className="col-6 p-0">
                        <VersionPreview />
                    </div>
                    <div className="col-6 p-0">
                        <Version />
                    </div>
                </div>
            </ContentVersionProvider>
        </ContentVersionsProvider>
    );
};

export default VersionContainer;

1 个答案:

答案 0 :(得分:0)

initialState更新时,将useReducer传递给data不会更新状态。

意思是,如果dataundefined并且可用,它将不会更新state

因此,只有在data可用时才需要传递它:

data && <VersionContainer data={data}/>