javascript - 在 useState() 声明处赋值与 useEffect() 比较

标签 javascript reactjs react-hooks jsx

我一直交替使用这两种方法,但我不确定哪一种更正确。他们的行为似乎是相同的,但我确信每个都有一个用例。任何人都可以帮助我了解每种情况的正确用途是什么?

const [customer, setCustomers] = useState(props.location.state);
  useEffect(() => {
    setCustomers(props.location.state);
  }, []);

最佳答案

您通常应该坚持第一个。调用 useStatesetter 可能会导致意外的重新渲染并降低性能。

在第一个 block 中,客户直接初始化,并且不会发生重新渲染。 setCustomer 方法将更改状态并重新呈现组件。最后整个函数将运行两次,您可以使用 console.log 进行验证。

const [customer, setCustomers] = useState(0);

useEffect(() => {
  setCustomers(15);
}, []);

console.log(customer) // will first output 0 and then 15

关于javascript - 在 useState() 声明处赋值与 useEffect() 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71819587/

相关文章:

javascript - React useEffect Hook 中对象和数组依赖项的 ESLint 规则

javascript - 如何以不可变的方式更新数组

javascript - 如何在不循环结束的情况下测试 componentDidUpdate

reactjs - 如何使用 React Jest 时间旅行到动画结束

reactjs - 如何在 redux 中将状态值存储为键值对?

javascript - React hooks,将函数的返回值设置为state会导致无限循环

javascript - 'useState' 未定义 no-undef React

javascript - 如何从许多内部非阻塞函数调用之一中提前退出外部函数?

javascript - 环回过滤器和包含

javascript - 使用 jQuery.css 方法取消设置 css 动画属性