将useState
的初始值用作函数是什么情况?
与仅传递值有什么区别吗?
例如
const [state, setState] = useState(() => someValue)
答案 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
被返回并被视为初始值。