可以打印出值,但在setState中为“未定义”

时间:2019-10-04 08:21:09

标签: javascript reactjs

我有将其值发送给函数的表格:

 _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}
                        />

2 个答案:

答案 0 :(得分:6)

您确定“无法设置未定义状态”是您得到的确切错误吗?我在这里假设this是未定义的,因为您的函数未绑定到this。要解决此问题,您可以手动将其绑定或使用箭头功能。我建议使用箭头功能:

_onChange = (ev, option) => {
    console.log(option.key)  // option.key = 3

    this.setState({ dropdownValue:option.key })  // option key = "undefined"
}

答案 1 :(得分:2)

您需要将函数绑定到上下文。 bind()方法创建一个新函数,该函数在调用时将其关键字设置为提供的值,并在调用新函数时提供给定的参数序列。

将此添加到构造函数中。

this._onChange = this._onChange.bind(this)
  1. https://reactjs.org/docs/handling-events.html