如何调用 multi setter useState 反应挂钩
How to call multi setter useState react hooks
我想在触发某些事件时一起调用 multi react hook
setter 函数
像 :
const [running, setRunning] = useState(false);
const [jumping, setJumping] = useState(true);
那我们要setRunning
和setJumping
在一起怎么办呢? (避免重新渲染组件)
您可以像这样按顺序调用它们 (demo):
const Comp = ({ flag }) => {
const [running, setRunning] = useState(false);
const [jumping, setJumping] = useState(false);
const setBoth = () => {
setRunning(true);
setJumping(true);
};
return (
<>
{"running: " + running}
{"jumping: " + jumping}
<button onClick={() => setBoth()}>setboth</button>
</>
);
};
或者,您可以像这样同时设置它们:
const Comp = ({ flag }) => {
const [RJ, setRJ] = useState([false, false]);
const setBoth = () => {
setRJ([true, true]);
};
return (
<>
{"running: " + RJ[0]}
{"jumping: " + RJ[1]}
<button onClick={() => setBoth()}>setboth</button>
</>
);
};
这是一个很好的问题,因为它挑战了为每个状态切片设置 setState
的最佳实践。
最好的方法是创建一个带有两个键(显式)的 POJO,一个用于 运行,一个用于跳转。然后,setter 将有 3 个排列。
- 设置为跳跃
- 仅设置 运行
- 设置两者
const [actions, setActions] = useState({running: false, jumping: false});
const { jumping, running } = actions;
我认为这不是最佳做法,您应该尽可能将它们分开以避免这种模式。但是,这是一个可能值得将它们合并以保存渲染的实例(这可能是可取的)。
我想在触发某些事件时一起调用 multi react hook
setter 函数
像 :
const [running, setRunning] = useState(false);
const [jumping, setJumping] = useState(true);
那我们要setRunning
和setJumping
在一起怎么办呢? (避免重新渲染组件)
您可以像这样按顺序调用它们 (demo):
const Comp = ({ flag }) => {
const [running, setRunning] = useState(false);
const [jumping, setJumping] = useState(false);
const setBoth = () => {
setRunning(true);
setJumping(true);
};
return (
<>
{"running: " + running}
{"jumping: " + jumping}
<button onClick={() => setBoth()}>setboth</button>
</>
);
};
或者,您可以像这样同时设置它们:
const Comp = ({ flag }) => {
const [RJ, setRJ] = useState([false, false]);
const setBoth = () => {
setRJ([true, true]);
};
return (
<>
{"running: " + RJ[0]}
{"jumping: " + RJ[1]}
<button onClick={() => setBoth()}>setboth</button>
</>
);
};
这是一个很好的问题,因为它挑战了为每个状态切片设置 setState
的最佳实践。
最好的方法是创建一个带有两个键(显式)的 POJO,一个用于 运行,一个用于跳转。然后,setter 将有 3 个排列。
- 设置为跳跃
- 仅设置 运行
- 设置两者
const [actions, setActions] = useState({running: false, jumping: false});
const { jumping, running } = actions;
我认为这不是最佳做法,您应该尽可能将它们分开以避免这种模式。但是,这是一个可能值得将它们合并以保存渲染的实例(这可能是可取的)。