这两个是等价的吗?如果不是,哪一个是最好的,为什么?
const [count, setCount] = useState(initialCount);
<button onClick={() => setCount(count + 1)}>+</button>
const [count, setCount] = useState(initialCount);
<button onClick={() => setCount(prevCount => prevCount + 1)}>+</button>
这两个例子都是有效的,工作原理相同。但是,我怀疑原语
的操作与函数
相同,因为JavaScript
支持一级/高阶函数
。这意味着函数将被视为任何其他变量,允许将它们作为参数传递,将它们分配给变量,并在任何其他函数中返回它们。
如果下一个状态值取决于上一个值,如本例中的增量按钮,则最好使用setState(setCount(prevCount))的功能版本=
如果将setter函数传递给回调函数(如onChange或HTTP请求-响应处理程序),则可能会遇到错误。
作为一个明确的例子,在下面的页面中,如果您单击“延迟计数器(基本)”,然后单击“立即计数器”,则计数只会增加1。但是,如果单击“延迟计数器(功能)”,然后单击“立即计数器”,则计数最终将增加2。
import React, { useState } from "react";
import ReactDOM from "react-dom";
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<h1>{count}</h1>
<button onClick={() => setTimeout(() => setCount(count + 1), 2000)}>
Delayed Counter (basic)
</button>
<button onClick={() => setTimeout(() => setCount(x => x + 1), 2000)}>
Delayed Counter (functional)
</button>
<button onClick={() => setCount(count + 1)}>Immediate Counter</button>
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<Counter />, rootElement);
提前谢了。我有一个状态数组,如下所示。 我需要添加一个项目到状态数组,我发现我们不需要做状态突变。如何使用PrevState设置状态。 如何调用set State以追加此状态数组。 像这样的东西?
我想用React useState钩子设置多个状态值,这样我就可以用useEffect钩子分别更新它们。我有以下代码: 但是当我用React DevTools检查应用程序时,我会看到钩子的多个“状态”值,而不是“订单”、“支付”、“提交”等。
我正在调用这个函数。因为它在增加值,但是当我访问它时,它返回以前的值。我想访问同一函数中最新更新的值,我应该做什么。 如何访问同一函数中的最新状态值
我有一个名为的组件,还有一个子组件名为。智利组件有一个名为的状态。我需要从AvailabiltyCalendar组件访问该状态并获取该状态值。我该怎么做呢。 可用压路机组件 DatePicker组件
我想在状态尚未装入时访问状态的属性。 我想做4,但得到以下错误: P. S也不起作用。
在基于类的React组件中,我们可以使用setState的函数形式定义处理函数,例如: 其中,两个参数表示传递给此组件的先前状态和更新的道具。 类似地,我们有一个函数形式,使用useState钩子在函数组件中设置状态,如下所示: 但正如我们所看到的,useState钩子中的函数形式缺少表示更新的道具的第二个参数 这是React开发团队故意留下的吗?在useState钩子中设置状态时,我们如何访问更