反应useEffect

时间:2020-07-20 21:22:43

标签: reactjs frontend

使用useEffect和dept []意味着它会一次置位setState吗?似乎道具到达很晚,因此我的单选按钮初始值未突出显示

const [isOnlineSystem, setFutureOnlineSystem] = useState(null);
const [reasonType, setReasonType] = useState('');
const [customReason, setCustomReason] = useState('');

useEffect(() => {
    setFutureOnlineSystem(props.isFutureOnlineSystem)
}, []);

如果我使用以下代码,它将设法分配一个值,当我打开模态表单单选按钮时,它会突出显示,但是我不希望它在每次组件更新时都设置值,因为该道具已经达到一次

 useEffect(() => {
        setFutureOnlineSystem(props.isFutureOnlineSystem)
    }, [props.isFutureOnlineSystem]);

 <Radio.Group value={isOnlineSystem}

1 个答案:

答案 0 :(得分:0)

const [isOnlineSystem, setFutureOnlineSystem] = useState(null);

单选按钮值不能设置为null。应该是

const [isOnlineSystem, setFutureOnlineSystem] = useState('');

使用useEffect和dept []意味着它将一次设置setState吗?

不。依赖关系意味着对于特定的dep,它将触发useEffect。

如果您将其保留为空。这意味着它会在每次状态更改时触发,这是一种不好的做法。

更新:

const isInitial = useRef(true);

 useEffect(() => {
        if(isInitial) {

        setFutureOnlineSystem(props.isFutureOnlineSystem);
        isInitial.current = false;
       }
    }, [props.isFutureOnlineSystem, isInitial]);

这只会设置一次状态。