何时使用useState初始值作为函数?

时间:2020-02-07 19:57:49

标签: reactjs react-hooks

useState的初始值用作函数是什么情况?
与仅传递值有什么区别吗?

例如

const [state, setState] = useState(() => someValue)

2 个答案:

答案 0 :(得分:12)

我认为docs或多或少都清楚:

const [state, setState] = useState(initialState);

initialState参数是初始渲染期间使用的状态。 在后续渲染中,将忽略它。如果初始状态是 昂贵的计算结果,您可以提供一个函数 而是仅在初始渲染上执行

const [state, setState] = useState(() => {
  const initialState = someExpensiveComputation(props);
  return initialState;
});

答案 1 :(得分:0)

如果要将useState的初始值作为函数使用,则需要使用柯里化:

const [state, setState] = useState(() => () => someValue);

这是因为在 documentation 中,useState 执行提供的函数并将其结果视为初始值。 使用柯里化,() => someValue 被返回并被视为初始值。