为了账号安全,请及时绑定邮箱和手机立即绑定

我想从 React.js 中单击按钮的选择选项中获取选定的值

我想从 React.js 中单击按钮的选择选项中获取选定的值

慕姐8265434 2023-07-06 18:14:21
我想从单击按钮的下拉列表中获取所选值,然后将其保存在 firebase 数据库中。除了下拉菜单之外,一切都工作正常。我还想在 firebase 数据库中添加一个下拉值。任何人都可以帮助我,我怎样才能得到它?我正在尝试,但它给出了错误。有人可以帮助我吗?import React, { Component } from 'react';import Select from 'react-select';import firebase from '../config/firebase.js';const options = [  { value: 'chocolate', label: 'Chocolate' },  { value: 'strawberry', label: 'Strawberry' },  { value: 'vanilla', label: 'Vanilla' },];class PostAd extends React.Component {  constructor() {    super();    this.state = {      selectedOption: null,      ads: [],    };  }  handleClick = () => {    firebase.database().ref('/').child('ads').push(this.state);    console.log(`Option selected:`, selectedOption);  };  handleChange = (e) => {    this.setState({      selectedOption,      [e.target.name]: e.target.value,    });    console.log(`Option selected:`, selectedOption);  };  render() {    const { selectedOption } = this.state;    return (      <div className="container postAd-container">        <h6 className="p-3">CHOOSE A CATEGORY</h6>        <hr />        <Select value={selectedOption} onChange={this.handleChange} options={options} />        <div className="p-3">          <div className="">            <p>Condition *</p>            <button className="btn-attributes" name="new" value="new" onClick={this.handleChange}>              New            </button>            <button className="btn-attributes" name="used" value="used" onClick={this.handleChange}>              Used            </button>          </div>          <div className="pt-2">            <p>Type *</p>            <button className="btn-attributes">Apple</button>            <button className="btn-attributes">Dany Tabs</button>            <button className="btn-attributes">Q Tabs</button>            <button className="btn-attributes">Samsung</button>            <button className="btn-attributes">Other Tablets</button>          </div>
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

创建一个单独的函数this.handleClickButton并将其用于新按钮和旧按钮。而是this.handleChange


handleClickButton = e => {

    this.setState({

      [e.target.name]: e.target.value

    });

  };


  handleChange = selectedOption => {

    this.setState({

        selectedOption

      },() => {

        console.log(`Option selected:`, this.state.selectedOption);

      });

  };

此代码将更改下拉列表,不会出现任何错误。


如果您想使用相同的功能来管理两者。以下是解决方案:


handleChange = selectedOption => {

    //onClick it will get e.target.value

    if (e.target.value) {

        this.setState({

            [e.target.name]: e.target.value

        });

    } else {

    //onChange it will get the selected option.

        this.setState({

            selectedOption: e

        });

    }

};


查看完整回答
反对 回复 2023-07-06
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信