useEffect内部的setState在酶中不起作用

问题描述 投票:1回答:1

我正在尝试以状态true来测试此组件:

<DashboardBreadcrumbButtons
        canShare={stateHooks.state.canShare} />

但是在我的测试中,始终为false。它进入后将状态分配为true,但在到达渲染状态后为false。

const setStates = ({ state, setState }, newState) =>
    setState(Object.assign({}, state, newState));    

const [state, setState] = useState({
            isFullscreen: false,
            confirmDelete: false,
            icon: props.icon,
            iconUpload: null,
            title: props.title,
            description: props.description,
            canShare: false,
            canDefineHome: false,
            canEditPortal: false,
            canCopyPortal: false,
            canViewAudit: false
        });

 useEffect(() => {
        debugger;
        // Enter here in the tests and assign
        setStates(stateHooks, {
            canShare: true,
            canDefineHome: true,
            canEditPortal: true,
            canCopyPortal: true,
            canViewAudit: true
        });
    }, []);

useEffect(() => {
    // Here, always is false in test, setStates not working
    console.log(stateHooks.state.canShare);
    debugger;
}, [stateHooks.state.canShare]);

在我的应用程序正在运行Application Image

reactjs react-hooks
1个回答
0
投票

setState是异步操作,因此很难预测何时设置。您可以使用以下代码来更新断言操作上方的包装器组件。这对我有用。

componentWrapper.update();
© www.soinside.com 2019 - 2024. All rights reserved.