我有将其值发送给函数的表格:
_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}
/>
答案 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)