【发布时间】:2021-10-26 21:36:54
【问题描述】:
我正在尝试根据道具数据设置初始状态。
const Calculate({data}) => {
const [number, setNumber] = data === 'end' ? useState(5) : useState(0);
return (...)
}
这给了我一个错误: 有条件地调用 React Hook "React.useState"。在每个组件渲染中,必须以完全相同的顺序调用 React Hooks。
所以我决定用 useEffect 更新我的代码:
const Calculate({data}) => {
const [number, setNumber] = useState(0);
useEffect(() => {
if (data === 'end') {
setNumber(5)
}
}, []);
}
但是,如果不需要,我宁愿不将状态最初设置为零。
或者我可以通过使初始值有条件来解决它吗?
const Calculate({data}) => {
const [number, setNumber] = useState(data === 'end' ? 5 : 0);
return (...)
}
这有什么副作用吗?为什么这行得通,而不是我最初的尝试?
【问题讨论】:
-
做你想做的事的惯用方式是
const [number, setNumber] = useState(data == 'end' ? 5 : 0) -
React 是痛苦的,你有没有尝试过像baby feather Solid 一样的超快速和轻量级?
标签: javascript reactjs react-hooks