仅当我的图像数组大于0时,我才尝试触发useEffect。但是在控制台中,我注意到它被触发了两次,当它是0的时候,并且大于0。
import { useSelector, useDispatch } from 'react-redux';
import { myModules } from '#/redux/modules';
const Component = () => {
const images = useSelector(getImages)
const dispatch = useDispatch();
useEffect( () => {
dispatch(myModules.actions.setMaskVisible(true));
}, [images.length > 0, dispatch]);
}
如何使此useEffect仅在图像数组大于0的情况下工作?
发布于 2021-10-01 01:02:11
这应该可以解决这个问题:
import { useSelector, useDispatch } from 'react-redux';
import { myModules } from '#/redux/modules';
const Component = () => {
const images = useSelector(getImages)
const dispatch = useDispatch();
useEffect( () => {
if (images.length > 0) {
dispatch(myModules.actions.setMaskVisible(true));
}
}, [images, dispatch]);
}
发布于 2021-10-01 01:00:06
这两种方法应该都行得通
import { useSelector, useDispatch } from 'react-redux';
import { myModules } from '#/redux/modules';
const Component = () => {
const images = useSelector(getImages)
const dispatch = useDispatch();
useEffect( () => {
if (images.length > 0) {
dispatch(myModules.actions.setMaskVisible(true));
}
}, [images, dispatch]);
}
import { useSelector, useDispatch } from 'react-redux';
import { myModules } from '#/redux/modules';
const Component = () => {
const images = useSelector(getImages);
const [triggerEffect, setTriggerEffect] = useState(false);
const dispatch = useDispatch();
if (images.length > 0) setTriggerEffect(!triggerEffect);
useEffect( () => {
dispatch(myModules.actions.setMaskVisible(true));
}, [triggerEffect, dispatch]);
}
https://stackoverflow.com/questions/69403182
复制相似问题