gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:28:32 24 4
gpt4 key购买 nike

我正在学习 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com