可以打印出值,但在 setState 中它的“未定义”[重复]
Posted
技术标签:
【中文标题】可以打印出值,但在 setState 中它的“未定义”[重复]【英文标题】:Can print out value, but in setState its "undefined" [duplicate] 【发布时间】:2020-02-02 13:29:23 【问题描述】:我有将其值发送给函数的表单:
_onChange(ev, option)
console.log(option.key) // option.key = 3
this.setState( dropdownValue:option.key ) // option key = "undefined"
正如您在上面看到的,我可以打印出该值,例如 3。但是,当我尝试将其直接添加到状态后,我收到错误“无法设置未定义状态”。
我尝试将值添加到变量中,然后将其用于 setState,但我仍然收到该错误。怎么会?
我的 onChange 方法:
<ChoiceGroup
className="defaultChoiceGroup"
defaultSelectedKey="B"
options=[
key: '1',
text: 'test'
,
key: '2',
text: 'test2'
,
key: '3',
text: 'test3',
]
onChange=this._onChange
label="Change password for..."
required=true
/>
【问题讨论】:
能否把调用_onChange
的代码包含进去?
是的,我已经添加了表格。
【参考方案1】:
您确定“无法设置未定义状态”是您遇到的确切错误吗?我在这里假设this
未定义,因为您的函数未绑定到this
。要解决此问题,您可以手动绑定它或使用箭头函数。我建议使用箭头函数:
_onChange = (ev, option) =>
console.log(option.key) // option.key = 3
this.setState( dropdownValue:option.key ) // option key = "undefined"
【讨论】:
【参考方案2】:您需要将函数绑定到上下文。 bind() 方法创建一个新函数,在调用该函数时,将其 this 关键字设置为提供的值,并在调用新函数时将给定的参数序列放在任何提供的参数之前。
将此添加到构造函数中。
this._onChange = this._onChange.bind(this)
-
https://reactjs.org/docs/handling-events.html
【讨论】:
以上是关于可以打印出值,但在 setState 中它的“未定义”[重复]的主要内容,如果未能解决你的问题,请参考以下文章
qt minimumSize() 返回 0 但在 qt 设计器中它设置为非零
将远程计算机名称变量从批处理文件传递到 hta 并在弹出窗口或 html 窗口中打印出值 [关闭]
“未捕获的 TypeError:函数不可迭代”在 [] 中使用 ...,但在 中它可以工作...?