问题描述
我正在使用 watch
、setValue
和 getValues
根据另一个下拉选择值更新一个下拉选择值。
也可以使用下拉列表的 onChange
so、onChange
、setValue
和 getValues
来完成,因此无需使用 watch
。
能否请您指导一下,watch
是使用 onChange
时的性能成本,或者看看下面的实现方式(没有 onChange
)就可以了。
const dropdownList_1_watch_value = watch(dropdownList_1);
useEffect(()=>{
if (dropdownList_1_watch_value !== 'specificValue') && getValues(dropdownListControlName) !== defaultValue)
{
setValue(another_dropdownListControlName,defaultValue);
}},[dropdownList_1_watch_value]);
return (
<>
// list of dropdown list components and other controls
</>
);
解决方法
关于性能,它们之间应该没有太大区别。
我将引用一篇博文:
React Watcher 应该谨慎使用,以防万一 真正以任何其他方式解决问题。在大多数情况下,您需要 当一些道具改变时做一些事情,你真的不需要它。为什么? 因为在大多数情况下,您通常可以与 导致道具改变的动作,例如当触发一个 过滤列表中的更改。