javascript - 如何在 React 中创建下拉菜单?

标签 javascript reactjs

我正在尝试在 React 中创建一个简单的下拉列表,但我面临两个问题。我的代码是:

import React from "react";

class EditEmployee extends React.Component {

    constructor() {
        super();
        this.state={
            salary:''
        }
     }

    validateSalary=(e)=>{
       // e.persist();
        var val=e.target.value;
        this.setState((prevState)=>{prevState.salary=val})
    }


    render() {

        return (
            <form>
                <div className="form-group">
                    <label>Salary:</label>
                    <select onChange={this.validateSalary} className="form-control" value={this.state.salary}>
                        <option value="20000">20000</option>
                        <option value="30000">30000</option>
                        <option value="40000">40000</option>
                        <option value="50000">50000</option>
                    </select>

                </div>
            </form>
        );
    }
}

export default EditEmployee

问题 1 - 当我选择一个选项时,我能够在控制台中获取该值,但下拉列表未显示所选值。我正在正确设置状态,但我不确定为什么它不更新 View 。

问题 2 - 如果我直接访问 setState 内的事件,我会收到有关合成事件的警告,并且代码不起作用。为什么我需要 e.persist() 来避免它?

最佳答案

validateSalary(e){
       // e.persist();
        var val=e.target.value;
        this.setState({
           salary = val
        });
    }


<select onChange={e => this.validateSalary(e)} className="form-control" value={this.state.salary}>
                        <option value="20000">20000</option>
                        <option value="30000">30000</option>
                        <option value="40000">40000</option>
                        <option value="50000">50000</option>
                    </select>

你需要改变你的功能

validateSalary=(e)=> {
   var val = e.target.value;
   this.setState({
       salary = val
    });
}

你能试试这个代码吗?我认为这是一些回调的问题

关于javascript - 如何在 React 中创建下拉菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52197072/

相关文章:

javascript - 正则表达式无法匹配 Angular 2 中的加号 ('+' ),但在测试人员中运行良好

javascript - 使用 jQuery 加载时淡入页面背景图像

javascript - Google map 中自定义标记的编号

javascript - Canvas 高度和宽度

javascript - 一个站点上有多种模式

javascript - 如何通过表单外的按钮提交表单?

javascript - 从父状态重新排序子组件时出现问题

reactjs - 用 Jest 测试 onChange 事件

reactjs - 在单击 div 时将焦点设置为输入

javascript - 如何使用 Jest 和 Enzyme 测试具有 Router、Redux 和两个 HOC 的 React 组件?