这是切换按钮的简单代码示例
import React, { useState } from "react";
import "./styles.css";
const initialState = {
isOpen: true
};
export default function App() {
const [state, _setState] = useState(initialState);
const setState = newState =>
_setState(prevState => ({ ...prevState, ...newState }));
const toggleButton = () => {
setState({ isOpen: !state.isOpen });
};
return (
<div className="App">
<button onClick={toggleButton}>Show</button>
{state.isOpen && <h1>Hello World</h1>}
</div>
);
}
问题
toggleButton
函数更改为以下代码,有什么好处?state
在setState
执行时不访问对象引用。const toggleButton = () => {
const { isOpen } = state;
setState({ isOpen: !isOpen });
};
问题
- 上面的代码是在对象内切换值的正确方法吗?
这也许值得商,,但是切换任何反应状态的正确方法是使用功能状态更新。这是因为可以将多个状态更新放入队列并进行批处理。您希望它们按照排队的顺序进行处理,并以正确的状态结束。
const toggleButton = () => {
setState(prevState => ({ isOpen: !prevState.isOpen }));
};
以下是我用来演示功能更新为何起作用的演示。
- 如果将toggleButton函数更改为以下代码,会有什么好处?通过在setState执行时不访问状态对象引用。
const toggleButton = () => { const { isOpen } = state; setState({ isOpen: !isOpen }); };
不,不是真的,它仍然直接访问回调函数范围内包含的当前状态对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句