使用React中的setState
函数替换的最佳做法是什么。组件--https://reactjs.org/docs/react-component.html#setstate
setState(updater, [callback])
更新程序具有签名的位置
(state, props) => stateChange
(因此,新状态取决于以前的状态和道具)
--用鱼钩?
当我搜索useState
钩子的API时,https://reactjs.org/docs/hooks-reference.html#functional-updates
函数更新如果使用以前的状态计算新状态,则可以将函数传递给setState。函数将接收上一个值,并返回更新后的值。下面是一个计数器组件的示例,它使用两种形式的setState:
function Counter({initialCount}) {
const [count, setCount] = useState(initialCount);
return (
<>
Count: {count}
<button onClick={() => setCount(initialCount)}>Reset</button>
<button onClick={() => setCount(prevCount => prevCount - 1)}>-</button>
<button onClick={() => setCount(prevCount => prevCount + 1)}>+</button>
</>
);
}
更新状态的函数,setCount
,不接受props作为参数。
最佳实践是使用useffect
hook,并将道具作为依赖项吗?
有人能解释一下为什么这是分开的吗?
Hooks FAQ中有一节是关于如何实现getDerivedStateFromProps?。虽然它首先说你可能不需要从道具派生状态,但它接着给出了一个通过闭包引用道具的例子,即直接引用它们。
所以我认为直接引用prop和set state函数参数的组合应该可以工作,比如:
export default function Conuter({ incrementBy }) {
const [count, setCount] = useState(0)
return (
<>
Count: {count}
<button onClick={() => setCount(prevCount => prevCount + incrementBy)}>
Increase count by increment
</button>
<button onClick={() => setCount(0)}>Reset</button>
</>
);
}
这里有一个活生生的例子。
简而言之,是的,使用设置计数(计数1)
是完全安全的,这是设置功能组件状态的通常做法。
如果您正在寻找回调模式,我相信这篇其他的SO帖子将更适合回答您的问题,因为他们正在为此目的使用使用效果
钩子。
所以我有这个: 只是一个数组的数字例如然而没有给出正确的总数,但?我甚至放了一个超时延迟,看看这是否解决了问题。任何明显的还是我应该发布更多的代码?
我试图将“加载”的状态从true更改为false,但当我调用一个函数并在该函数中设置“this.setState({loading:false})”时,加载状态仍然保持true。 在下面的代码中,当按钮按钮函数被调用时,它将“加载”状态设置为真,但当用户成功登录“加载”状态时,应该变为假,这样我的渲染按钮函数将重新渲染,旋转器可以隐藏自己并显示按钮。 为什么LoginSAccess函数中的“加载”
我有问题的反应形式和管理的状态适当。我在一个表单中有一个时间输入字段(在一个模态中)。初始值在中设置为状态变量,并从父组件传入。这本身就很好用。 当我想通过父组件更新默认的start_time值时,问题就来了。更新本身通过在父组件中发生。但是,在我的表单中,默认的start_time值从不更改,因为它只在中定义过一次。 我尝试使用通过强制更改状态,这确实起到了作用,但给了我错误。 所以我的问题是,
我正在尝试使用状态将一个表单输入值复制到另一个表单输入值,但状态没有更新 我创建了一个带有按钮的表单,其中左侧表单输入的值应复制到右侧表单输入。这是我的代码: 无论我做什么,dbSecName的状态都不会改变。我试着设置一个新的常量。我尝试使onclick函数异步并等待。如果我为我试图设置的变量的值添加,我可以正确地看到它,但是dbSecName的console.log总是显示原始值。 我真的不知
我有一个对象的状态数组: 我有一个添加按钮,用于将对象添加到数组中,这是onclick事件的主体:
它几乎添加了一个对象,该对象包含来自主窗体的子窗体的值。 这是我用作按钮的函数的函数。 这将一个新对象添加到一个名为的状态,该状态是一个对象数组。 提前谢了。