尽管我没有执行setTest来更改测试值,但为什么日志仍会触发?我期望第一次因为测试值保持为0而不会触发日志?

function App() {
  const [test, setTest ] = useState(0)

  useEffect(() => {
    console.log('log')
  }, [test])

  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
    </div>
  );
}

我有这样的情况。第一次加载时不执行任何操作,然后如果用户在页面上选择一个选项然后执行某项操作,我该如何使用useEffect进行操作?

最佳答案

从https:Using the Effect Hook



您的组件已呈现,useEffect已触发,并且您的日志已运行。

听起来您可能将useEffect(仅包含一个参数,一个回调)与其他包含多个参数的钩子(Hook)混淆了。

----编辑(注释相关)----
useEffect不能直接替换基于类的componentDidMountcomponentDidUpdate方法,但是由于运行时间的限制,它通常可以用来替换那些方法。 See了解更多信息。您可能还需要阅读相关的useLayoutEffect Hook 。

如果您的意图是挂接一些“加载时”逻辑,例如事件处理程序,则不需要挂接即可。相反,您只需要一个React事件处理程序属性,例如。

<option onChange={changeHandler} />

(See以获得更多信息。)

关于javascript - react useEffect触发器,尽管依存值保持不变?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57380972/

10-12 06:32