当前位置: 首页 > 知识库问答 >
问题:

在JS中选择返回先前选定值的值

曹浩波
2023-03-14

我在反应中有一个选择,只是想console.log选择的值。我的问题是console.log返回最后选择的值。例如,如果我选择4,然后是3,然后是5,代码将呈现1(默认值),然后是4,然后是3。

这是我的JSX代码:

<p>choose Number</p>                                     
<select value={this.state.value} onClick={this.handleNumber}>
  <option value="one">1</option>
  <option value="two">2</option>
  <option value="three">3</option>
  <option value="four">4</option>
</select>

这是处理输入更改的函数:

handleNumber = (event) => {
  this.setState({
     nb: event.target.value
  })
  var number = this.state.nb;
  console.log(number);
}

共有1个答案

公良理
2023-03-14

您的代码存在多个问题。

由于您正在处理的事件是一个onClark,它将永远不会更新,直到第二次单击。

<select value={this.state.value} onChange={this.handleNumber}>

在您提供的代码中,您将为选择标记提供这个值属性:this.state.value,如果您使用具有相同状态属性的setState(),这是可以的。

您正在使用:

this.setState({
  nb: newValue
});

这将更新state.nb,而不是state.value。使用:

this.setState({
  value: newValue
});

这意味着React将决定何时是更新状态的最佳时机,这可能会晚于您希望使用console.log()的时间。

即使您使用onChange事件,您也可能无法读取下一行代码中的状态:

this.setState({
  value: event.target.value
})
console.log(this.state.value)

状态更改后立即执行操作的最佳方法是setState回调函数:

this.setState({
  value: event.target.value
},function(){
  console.log(this.state.value)
})

最后,您的组件及其相应的更正应该如下所示:

class Example extends React.Component {
    state = {
        value: "0"
    }
    handleNumber = (event) => {
        this.setState({
            value: event.target.value
        }, () => {
            console.log(this.state.value)
        })
    }
    render() {
        return (
       <div>
        <p>choose Number</p>                                     
        <select value={this.state.value} onChange={this.handleNumber}>
          <option value="one">1</option>
          <option value="two">2</option>
          <option value="three">3</option>
          <option value="four">4</option>
        </select>
      </div>
        )
    }
}

如果你想测试它,你可以检查这个片段。

 类似资料:
  • 问题内容: 对此不熟悉,尝试按照著名的Flask教程使用Flask-bootstrap,Flask-wtforms,Jinja等构建一个应用程序 我有一个带有2个选择字段和一个按钮的表单。 我只希望第一个字段预先填充,而另一个字段根据前一个字段的选定值填充(在客户端?)。 在模板中,我尝试类似 可以正常工作(只要我返回元组列表以使用正确的javascript和路由填充下一个字段),但我想要以下内容

  • 我正在做一个项目,最近开始使用MPAndroidChart。 我的MPAndroidChart可以正常工作并正确填充图表数据,但我希望有一种方法能够拖动并选择图表的一个区域。选择完成后,需要返回所选点的x值和y值。 我找不到任何方法来做我想做的事。我在中发现了这种突出显示功能https://github.com/PhilJay/MPAndroidChart/wiki/Highlighting但我认

  • 下面是客户选择器的代码组件 render Item函数中的控制台日志:(“SELECTED ID u STATUSOPTIONS component:”,selectedId)为第一个选取器项选择返回null,为下一个选取器项选择返回上一个值,是否有人可以帮助修复它?

  • 问题内容: 我有一组复选框,这些复选框在选中时将值传递为1,否则将值传递为0。但是,不是将未选中的复选框的值发送为“ 0”,而是发送的值为“ NULL”。 我在下面的JS代码中应将值相应地设置为0/1,但是仍然将该值作为NULL发送。有什么方法可以确保在未选中复选框的情况下传递的值为0? 更新 这是我的html: 默认情况下,它们都被选中。 如果未选中其中之一,则MySQL报告以下错误:0SQLS

  • 如何在SQL Select语句上返回布尔值? 我尝试了以下代码: 并且它只返回如果存在于表中。如果表中不存在UserID,我希望它返回。

  • 我有一个选择框,上面附有国家值(例如英国) 我的目标是根据所选的选项在页面上显示国旗图像 无法在选择选项中插入图像路径,因此我希望能够提取选项值的最后2个字符,并在生成的图像src eg中使用它们 印度 这可以用js来完成吗? 我有以下与jQuery返回所选选项的文本值的时刻,但想在图像URL实现这一点。