首页 > 解决方案 > 反应 onChange 功能不适用于选择标签

问题描述

我有这个问题有一段时间了,所以我希望在这里找到答案。我尝试根据react docs 中给出的代码实现一个简单的选择标签。但是,这对我不起作用。这是我编写的代码:

<select value={this.state.formId} onChange={this.handleInternalFormChange}>
                        {
                            Object.keys(this.state.userForms).map(formKey => ( 
                                <option key={formKey} value={formKey} > {this.state.userForms[formKey]} </option>
                            ))
                        }

这是调用 onChange 的函数,

 handleInternalFormChange = (e) =>{
        this.setState({
            formId: e.target.value
        })
        console.log(this.state.formId);

    }

进行这些更改后,onChange 函数似乎不起作用。我试图打印出被调用的事件,但它似乎不包含target. 不知道该怎么办了,有人可以帮忙吗?

标签: javascriptreactjs

解决方案


您当前的操作方式没有任何问题。你console.log()没有打印出状态的原因是因为setState()是异步的(console.log()顺便说一下也是异步的)。如果您想查看更新后的状态是什么,请使用setState()的第二个参数,它为您提供新值。

onChnage()您可以通过将函数调用替换为以下内容来确认正在使用该事件:

<select onChange={e=>console.log(e.target.value)}>

如果您想在状态更新后检查该值,请执行以下操作:

this.setState({value}, updatedState=>console.log(updatedState));

希望这有助于澄清事情,


推荐阅读