如何使用React Hook useEffect检查状态默认布尔布尔假是否更改为真

时间:2019-08-01 22:23:04

标签: javascript reactjs react-hooks

当前,我完全迷上了 React Hook

状态更改为true时,应显示console.log('currentBoolean'), 但这没有发生。

不确定是否应该为此使用usePrevious,因为在比较数字时,此代码可以很好地工作,但是当我尝试检查默认布尔值是否更改时,似乎不起作用。

const MemoryPageTwo = ({ disabledAllCards }) => {
    const boolean = useRef(null);
    const [ isCurrentBoolean , setLevel ] = useState(false);

    useEffect(() => {
        console.log(isCurrentBoolean);
        if(isCurrentBoolean) {
            console.log('currentBoolean');
        }

    }, [isCurrentBoolean]);
    
    useEffect(() => {
        const storedBoolean = disabledAllCards ;
      
        boolean.current = storedBoolean;
        return () => storedBoolean
    }, []);

    //
    useEffect(() => {
        setLevel(boolean.current !== disabledAllCards);
    },[boolean.current, disabledAllCards]);
}

const mapStateToProps = state => {
    console.log(state.app.disableCards); // default is false, but this will be true if the memorycard matches 
    return { 
        disabledAllCards: state.app.disableCards || [],
    }
}

export default connect(mapStateToProps, null)(MemoryPageTwo);

1 个答案:

答案 0 :(得分:0)

您的boolean.current值将永远不会更改,因为它的useEffect回调具有构造函数的作用,由于内部有空依赖性,该函数只会运行一次。