反应useState arg函数与值

时间:2020-05-02 17:02:40

标签: javascript reactjs use-state

在做

const [state, setState] = React.useState(initialState)

如果我传递一个值与返回一个值的函数为什么无关紧要?我是否应该始终传递该函数,以便它不重新运行?

  const initialState = foos.reduce((acc, f) => {
    console.log('re-runs on render')
    // ...
  }, {})

vs。

  const initialState = () => {
    console.log('will only run once')
    return foos.reduce((acc, f) => {
      // ...
  }

2 个答案:

答案 0 :(得分:1)

此函数的功能版本用于初始化初始状态的值,该值可能会计算起来很昂贵-例如,您可以使用它来启动对每个组件实例只想运行一次的资源的提取。 / p>

如果您不需要延迟初始化状态值,只需使用值本身即可。除非您确实需要延迟初始化,否则差异将很小。

答案 1 :(得分:1)

如果传递函数,则该函数将仅执行一次。如果您通过其他设置,它将在每次渲染时重新计算,但不会触发任何更改或重新渲染。