javascript - useState 和 useEffect 之间的区别

标签 javascript reactjs react-native

我使用 useState 而不是 useEffect,它可以很好地显示数据(为什么?)

React.useState(() =>getMovies(), [])

注意:我添加了 console.log 并且得到了相同的结果

最佳答案

当函数传递给 useState 时,这是向 React 发出使用 lazy initialization 的信号。 - 仅当组件挂载时才会调用该函数计算初始值。

如果要放入状态的值可以同步计算/检索,这可能是最好的设计模式 - 它很短,并且不需要您稍后区分状态是否值未定义或已填充。

const [stateValue, setStateValue] = useState(calculateExpensiveInitialStateValue);

使用 useEffect 的时间是当要填充的值无法同步计算时,在这种情况下,最好的方法是同时使用 useState (对于状态)和 useEffect(表示您想要运行一个函数来检索状态值一次)。

虽然理论上你可以有一条线,就像

React.useState(() =>getMovies(), [])

这很令人困惑,因为

  • 不使用返回的结果状态值
  • useState 不接受第二个参数依赖数组

useEffect 更适合该任务,因为它没有返回值(与 useState 不同),并且更灵活,因为它接受依赖项数组。 useEffect 更清楚地向代码读者指示“此回调应仅在依赖项数组更改时运行。”

关于javascript - useState 和 useEffect 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71166664/

相关文章:

javascript - 使用 ng-repeat 拖动后,Angularjs 指令属性绑定(bind)左/顶部位置

javascript - 自定义新标签页: content script won't receive message from bgscript

javascript - React js状态变量自动更新,无需setstate方法

javascript - 在组件之间共享状态

javascript - 世博会去 Stripe : Native module cannot be null

javascript - javascript中静态方法的名称不能重复?

javascript - 在 Pell Editor 中粘贴 html 内容并使用 Striptags nodejs 包进行格式化

python - 在 Android 模拟器中将 React-Native 与 Django 插入的最佳方式是什么?

reactjs - 可触摸的不透明度标题 React Native

javascript - 使这个自动