“React has detected a change in the order of Hooks” but Hooks seem to be invoked in order

后端 未结 2 1492
梦谈多话
梦谈多话 2021-02-05 00:34

I am trying to use Context and Reducers via React\'s hooks, and running into problems with the order of the hooks not being constant. My understanding

2条回答
  •  终归单人心
    2021-02-05 01:08

    I ran into this same error message in a component I was writing due to use of short-circuiting logic.

    This resulted in an error:

    const x = useSelector(state => state.foo);
    if (!x) { return ; }
    const y = useSelector(state => state.bar);
    
    

    This is because when x is truthy the list of hooks has length 2, but when x is falsey the list has length 1.

    To resolve the error I had to put all hook use before any early terminations.

    const x = useSelector(state => state.foo);
    const y = useSelector(state => state.bar);
    if (!x) { return ; }
    
    

提交回复
热议问题