ReactJS - 新的 useState React 钩子中的 prevState?
IT技术
reactjs
react-hooks
2021-04-02 00:05:00
5个回答
对于对象,您可以使用扩展运算符prevState
在您的setState
调用中使用。
const [object, setObject] = useState({
firstKey: '',
secondKey: '',
});
setObject((prevState) => ({
...prevState,
secondKey: 'value',
}));
// object = {
// firstKey: '',
// secondKey: 'value',
// }
下面的代码片段显示了一个prevState
用于设置对象状态的示例。
为了使用Maps,您需要在操作值之前克隆它。否则,它会改变原始的Map
并且 React 不处理 mutatable state
。
const handleChange = useCallback(({ target: { name, checked } }) => {
setCheckbox(prevState => {
return new Map(prevState).set(name, checked);
});
}, []);
更新的工作示例:
state updater
fromuseState
提供了一个回调模式,它返回您可以用来更新当前状态的先前状态
const [ someState, setSomeState ] = useState( new Map() )
setSomeState(prevState => prevState.set( key, value ) )
您已经在 destructed 变量中获得了先前的状态: someState
所以你可以这样做:
const [ someState, setSomeState ] = useState( new Map() )
setSomeState( someState.set( key, value ) )
用这个
const [setSome, setSomeState] = useState({thing: 'loding', count: 1});
setSomeState(prev => ({...prev, count: prev.count + 1}));
其它你可能感兴趣的问题