在做
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) => {
// ...
}
答案 0 :(得分:1)
此函数的功能版本用于初始化初始状态的值,该值可能会计算起来很昂贵-例如,您可以使用它来启动对每个组件实例只想运行一次的资源的提取。 / p>
如果您不需要延迟初始化状态值,只需使用值本身即可。除非您确实需要延迟初始化,否则差异将很小。
答案 1 :(得分:1)
如果传递函数,则该函数将仅执行一次。如果您通过其他设置,它将在每次渲染时重新计算,但不会触发任何更改或重新渲染。