reactjs - 如何通过另一个输入更新 React-Select 状态/选定值?

标签 reactjs react-select

我正在学习 react 并尝试通过按钮更新 react 选择下拉列表的状态/选定值。单击按钮时,将调用 buttonClick() 函数来设置新的状态值,但 react-select 状态没有改变。下拉列表中的选定标签保持不变。如何更改 react-select 的状态以显示新选择的值?谢谢。

https://codesandbox.io/s/react-select-test-nv8d8

最佳答案

react-select 期望选择 value 对象是作为 options 传递的选项之一

Edit react-select-test (forked)

因此您需要跟踪状态中的选定值并将其传递给组件

还要检查按钮单击中的逻辑以获取选项并进行设置。

import React, { Component } from "react";
import Select from "react-select";
import axios from "axios";

export default class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      selectedValue: {},
      selectOptions: []
    };
  }

  async getOptions() {
    const res = await axios.get("https://jsonplaceholder.typicode.com/users");
    const data = res.data;

    const options = data.map((d) => ({
      value: d.id,
      label: d.name
    }));

    this.setState({ selectOptions: options });
  }

  handleChange(e) {
    console.log(e);
    this.setState({ selectedValue: e });
  }

  componentDidMount() {
    this.getOptions();
  }

  buttonClick = () => {
    const valueToSet = this.state.selectOptions.find((row) => {
      return row.value === 2 && row.label === "Ervin Howell";
    });

    if (valueToSet) {
      this.handleChange(valueToSet);
    }
  };

  render() {
    const { selectedValue = {} } = this.state;
    console.log(this.state.selectOptions);
    return (
      <div>
        <Select
          value={selectedValue}
          options={this.state.selectOptions}
          onChange={this.handleChange.bind(this)}
        />
        <p>
          You have selected <strong>{selectedValue.label}</strong> whose id is{" "}
          <strong>{selectedValue.value}</strong>
        </p>
        <button onClick={this.buttonClick}>Click</button>
      </div>
    );
  }
}

关于reactjs - 如何通过另一个输入更新 React-Select 状态/选定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68449836/

相关文章:

javascript - 终极版 : form input fields stay blank

reactjs - 当显示 'no results found' 时,如何以编程方式隐藏下拉菜单?

reactjs - 使用 Formik 进行 React-select 不更新选择字段而是执行其他所有操作

javascript - 更改 JSON 对象的格式

javascript - 附加到 reactJs 中的无限滚动

reactjs - React JhiPagination 组件中事件页面的样式

javascript - 无法解析 'react/redux' 中的 "..\containers\CarForm.js"

reactjs - 如何删除菜单下拉 react 选择中的填充顶部?

javascript - 使用 GraphQL 进行 React-Select

javascript - react-select-plus + 每个退格键删除调用加载选项方法