当前,我完全迷上了 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);
答案 0 :(得分:0)
您的boolean.current值将永远不会更改,因为它的useEffect回调具有构造函数的作用,由于内部有空依赖性,该函数只会运行一次。