反应选择保存道具

时间:2018-10-08 17:43:30

标签: javascript reactjs forms

我正在使用react-select在我的UI上启用多个选择。但是,我需要从反应选择中获取道具,因为我会将选择值发送到后端。我想知道。如何将状态值保存在数组中。我做了一个console.log并且得到的值是

0: {value: "vanilla", label: "Vanilla"}
1: {value: "strawberry", label: "Strawberry"}
2: {value: "chocolate", label: "Chocolate"}.

但是,我只想将值标签发送给后端,例如将香草等确切的值发送给我。有什么建议么。非常感谢。用于反应选择的github link是:

    import React, { Component } from "react";
    import { connect } from "react-redux";
    import PropTypes from "prop-types";
    import checkboxes from "./checkboxes";
    import Checkbox from "./Checkbox";
    import Select from "react-select";
    const options = [
      { value: "chocolate", label: "Chocolate" },
      { value: "strawberry", label: "Strawberry" },
      { value: "vanilla", label: "Vanilla" }
    ];

    class CreatePreferences extends Component {
    state = {
    selectedOption: null
  };
  handleChange = selectedOption => {
    this.setState({ selectedOption });
    console.log(`Option selected:`, selectedOption);
  };
  render() {
    const { selectedOption } = this.state;

    return (
      <Select
        value={selectedOption}
        isMulti
        onChange={this.handleChange}
        options={options}
      />
    );
  }
}
CreatePreferences.propTypes = {
  profile: PropTypes.object.isRequired
};
const mapStateToProps = state => ({
  profile: state.profile
});

export default connect(mapStateToProps)(CreatePreferences);

1 个答案:

答案 0 :(得分:0)

要做的事情很少:您需要一个构造函数来定义状态,并且需要使用选定的值更新此状态。

Online Sandbox Demo

使用构造函数定义状态,例如...

  constructor(props) {
    super();
    this.state = {
      selectedOptions: [],
    };
  }

然后像这样定义事件处理程序。 (您要求保存“标签”,通常是显示“标签”,保存“值”,但是无论如何,都应要求...)...

  handleChange = selectedOption => {
    const state = this.state;
    state.selectedOptions = [];
    selectedOption.forEach((option) => {
      state.selectedOptions.push(option.label);
    });
    this.setState(state);
    console.log(`Options selected:`, JSON.stringify(state.selectedOptions, null, 4));
  };

在这里,您将看到这样的输出...

Options selected: [
    "Chocolate"
]
Options selected: [
    "Chocolate",
    "Strawberry"
]

通常,要使render()函数和状态协同工作要做很多事情,这在ReactJS中总是如此。

但是您似乎正在使用React-Select,它似乎可以自动处理其中的一些问题:React-Select Github Page