仅当存在某个变量时才使用 useEffect 依赖项,然后仅将其视为依赖项

Dea*_*ool 2 javascript reactjs react-hooks use-effect

我有以下一组运行代码:

useEffect(() => {
 if (field[1].isActive === true) {
  handleMore();
 }
}, [field[1].text]);
Run Code Online (Sandbox Code Playgroud)

问题是有时Fieldjson 响应中没有出现,因此此代码会显示错误。由于我无法将 useEffect 放入某些条件语句中(根据 React 指南,所有 useEffects 应始终以相同的顺序运行),有什么方法可以在依赖项中添加一些代码,例如[field.length? field[1].text: null]. 我不知道。

有人可以帮忙吗?

Ami*_*han 8

您可以为此使用可选链接或 && 。

useEffect(() => {
 if (field?[1]?.isActive === true) {
  handleMore();
 }
}, [field?.[1]?.text]);
Run Code Online (Sandbox Code Playgroud)

或者

useEffect(() => {
   if (field?[1]?.isActive === true) {
      handleMore();
   }
 }, [field && field[1] && field[0].text]);
Run Code Online (Sandbox Code Playgroud)