这两个功能之间的主要区别是什么?
handleOnChange(evt) {
this.setState(() => ({
tickerName: evt.target.value
}));
}
handleOnChange(evt) {
this.setState({ tickerName: evt.target.value });
}
为什么用直接更改状态的handleOnChange()函数可以正常工作?
<input
type="text"
value={this.state.tickerName}
onChange={(evt) => this.handleOnChange(evt)}
/>
当我使用第一个通过回调更改状态的函数时,出现以下错误:
TypeError: evt.target is null
这是setState的两种不同语法
第一:
handleOnChange(evt) {
this.setState(() => ({
tickerName: evt.target.value
}));
}
使用updater函数作为第一个参数。
第二:
handleOnChange(evt) {
this.setState({ tickerName: evt.target.value });
}
使用要更新的对象
在更新程序功能中使用综合事件时,需要使用 event.persist()
从 文档中 :
SyntheticEvent被合并。这意味着在调用事件回调之后,将重新使用SyntheticEvent对象,并且所有属性都将无效。这是出于性能原因。因此,您不能以异步方式访问事件。
如果要以异步方式访问事件属性,则应在事件上调用event.persist(),这将从池中删除综合事件,并允许用户代码保留对该事件的引用。
你的拳头盒看起来像
handleOnChange(evt) {
evt.persist();
this.setState(() => ({
tickerName: evt.target.value
}));
}
或者,event.persist()
您可以将事件存储在另一个对象中,而不是使用
handleOnChange(evt) {
const value = evt.target.value;
this.setState(() => ({
tickerName: evt.target.value
}));
}
PS: 仅当您希望基于prevState
或更新当前状态时,才应为setState使用updater函数。props
CodeSandbox
简述 在某些情况下,React框架出于性能优化考虑,可能会将多次state更新合并成一次更新。正因为如此,setState实际上是一个异步的函数。 但是,有一些行为也会阻止React框架本身对于多次state更新的合并,从而让state的更新变得同步化。 比如: eventListeners, Ajax, setTimeout 等等。 详解 当setState() 函数执行的时候,函数会创建一个暂
在这里反应newb。我有一个返回表单(表示组件)的纯函数。在这种表单中,我需要为那些受控制的文本字段处理onChange事件。FWIU,我需要这个。设置状态(...)在我的onChange事件处理程序中。但是,由于这是一个纯函数,我没有访问this.setstate()的权限。在ES2015函数中有没有一种很好的方法来设置这些onChange事件的状态?如果有帮助的话,我也在使用redux。示例代
在async-nature-of-setState中我们已经提到过, setState其实是异步的. 因为出于性能优化考虑, React会将多次setState做一次批处理. 于是setState并不会在被调用之后立即改变我们的state. 这就意味着你并不能依赖于在调用setState方法之后state, 因为此时你并不能确认该state更新与否. 当然针对这个问题我们也有解决办法—用前一个st
我试图在反应应用程序中显示时间,并希望以12小时的格式显示。 我编写了一个函数,如果小时数显示为13或以上,则删除“12”。我想将该函数传递到setState,但仍然会得到一个语法错误。 我希望看到下午1:31,但我只是在setState行中出现了语法错误。我无法忘记这一点。 除此之外,我在之前的状态下如何通过?
问题内容: 有人可以解释一下为什么 this.setState 不是函数吗? 我不明白为什么我的代码有错误 谢谢 问题答案: 这是问题。使用。