可以打印出值,但在 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 中它的“未定义”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 WKWebView 打印按钮单击 [重复]

qt minimumSize() 返回 0 但在 qt 设计器中它设置为非零

将远程计算机名称变量从批处理文件传递到 hta 并在弹出窗口或 html 窗口中打印出值 [关闭]

“未捕获的 TypeError:函数不可迭代”在 [] 中使用 ...,但在 中它可以工作...?

Pyspark SIZE 函数本身可以工作,但在 UDF 中它没有 [关闭]

调皮的js