ReactJS:如何从输入字段的下拉列表中显示选定的值?

Posted

技术标签:

【中文标题】ReactJS:如何从输入字段的下拉列表中显示选定的值?【英文标题】:ReactJS: How to display selected value from dropdown in input fields? 【发布时间】:2020-05-31 01:04:16 【问题描述】:

我正在尝试执行以下操作:

用户可以从下拉菜单中选择一个计算。选定的数字(来自计算)出现在输入字段中,用户可以更改计算。按下“添加”按钮后会显示修改后的计算。修改后的计算也应在下拉菜单中以红色显示。

我设法正确计算,但所选数字未出现在输入字段中。我必须做些什么来更新输入字段的值?

这是我的代码:

import React from 'react';

export default class Lisatehtava1 extends React.Component 
    constructor(props) 
        super(props);
        this.state = 
            num1: 0,
            num2: 0,
            total: 0,
            results: [],
        
    

    handleChange = (e) => 
        const  name, value  = e.target;
        this.setState(
            [name]: value
        )
    


    add = () => 

        const  num1, num2  = this.state;

        this.setState(
            total: (parseInt(num1) + parseInt(num2))

        , () => 

            let result =  num1: this.state.num1, num2: this.state.num2, total: this.state.total ;

            const t = [...this.state.results, result];

            this.setState( results: t , () => 
                this.setState( num1: "" , () => 
                    this.setState( num2: "" );

                );
            );
        )
    

    render() 

        let dropdown = this.state.results.map((item, id) => 
            return <option key=id>item.num1 + item.num2 = item.total</option>
        );

        return (
            <div>
                <div>
                    <label>Numero 1</label>
                    <input type="text" name="num1" onChange=this.handleChange />
                </div>
                <div>
                    <label>Numero 2</label>
                    <input type="text" name="num2" onChange=this.handleChange />
                </div>
                <button onClick=this.add>Add</button>
                <div><select onChange=this.handleChange>dropdown</select></div>
            </div>
        );
    

【问题讨论】:

【参考方案1】:
<input type="text" name="num2" onChange=this.handleChange />

在输入中,您没有分配调用 onChange 函数后获得的值。所以它总是空的。

写成:

<input type="text" name="num2" onChange=this.handleChange value=this.state.num1 />

【讨论】:

【参考方案2】:

有一些事情你必须改变。

1.在输入标签中你必须包含一个value属性

<input type="text" name="num1" onChange=this.handleChange value=this.state.num1 />

类似于第二个输入标签

2.您可以对选择标签事件中的值使用拆分。

<select onChange=(e)=>
                      this.setState(
                        num1:e.target.value.split(" ")[0],
                         num2:e.target.value.split(" ")[2]
                      )
                >dropdown</select>

您可以查看实时示例https://stackblitz.com/edit/react-fm8wd4

【讨论】:

我仍在为这种样式苦苦挣扎:修改后的计算应在下拉菜单中以红色显示。我应该在样式组件中使用条件样式吗?我不知道该怎么做。很抱歉这些简单的问题。我只是一个初学者... @emmip 是的,您应该使用条件样式。为下拉菜单制作 2 种不同的样式,并在要显示的位置添加条件。可以参考这个***.com/a/58339902/6181916

以上是关于ReactJS:如何从输入字段的下拉列表中显示选定的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ReactJS 中更改单选按钮时重置选定的下拉列表

根据下拉列表中的选定值显示表单字段Angular TypeScript

css 根据选定的下拉列表显示输入字段并根据显示的输入内容更改隐藏的输入值(如果为空且如果不为空

如何从下拉列表中继续显示选定的选项?

如何在下拉列表中显示所选项目名称?

在与下拉列表分开的输入中显示 select2“药盒”