作者回复: 因为需要在函数体执行之前执行。useEffect 是在 render 完后执行。
作者回复: 正确~
作者回复: 没错~ 传入空数组就可以了。
作者回复: 确实如此,useState 会导致多余的渲染。
作者回复: useEffect 接收的 callback 是在 依赖发生变化以及第一次时执行,return 的函数是在下一次 callback 执行之前执行,或者销毁时执行。这段代码的 依赖项为空,所以只会在最后组件销毁时执行。
作者回复: DOM 渲染后执行。
作者回复: 所有在 useEffect 中用到的变量都应该被作为依赖的参数,这样在 useEffect 执行的时候才会执行正确的回调函数。
作者回复: useRef 是定义一个当前组件实例上的一个变量。所以组件重新 mount,或者多实例,是互不相关的。
作者回复: useEffect 是在组件 render 完后才执行的,这里的 useSingleton 可以在函数体内直接执行,而不是 render 完之后。
作者回复: 正确!