如果我有两个 Select 控件,其中一个依赖于另一个,因此如果我更改selectA
值,则将根据它 Select selectB
值:
...
const [values, setValues] = useState({ selectA: undefined, selectB: undefined });
const setSelectValue = (field, value) => {
setValues((current) => {...current, [field]: value});
}
return (
<>
<Select
name="selectA"
value={values.selectA}
onChange={(val) => setSelectValue('selectA', val)}
...
/>
<Select
name="selectB"
value={values.selectB}
onChange={(val) => setSelectValue('selectB', val)}
...
/>
</>
);
就性能而言,最好是使用useEffect
还是只更改selectA
onChange
方法的selectB
值?
// Is it best to use useEffect
useEffect(() => {
setSelectValue('selectB', values.selectA.potato);
}, [values.selectA]);
// ... or is it best to change it directly on onChange method?
<Select
name="selectA"
value={values.selectA}
onChange={(val) => {
setSelectValue('selectA', val);
setSelectValue('selectB', val.potato);
}}
...
/>
Does it matter at all? Is there any difference in terms of performance between both?个
我知道,useEffect
对于依赖于可以随时更新的数据的副作用很方便,但在这种情况下,当我在selectA
上 Select 它时,我知道数据是正确的,它不能以任何其他方式更改,所以我想知道是否有必要用useEffect
来观察那个值,而不是直接抓住它并设置它.
请记住,selectA.potato
的值可以是任何类型的,但我认为它是一个对象.