reactjs - 值更改时 React-Select 触发 onChange
问题描述
我正在使用 React-Select 并在我的页面上有两个下拉菜单。When the first dropdown is selected it changes the value of the 2nd dropdown successfully but I'm trying to get the onChange on the 2nd dropdown to change when that happens also. 有没有办法做到这一点?我制作了一个简单示例的代码框,说明了我要完成的工作
import React, {useState} from "react";
import Select from 'react-select';
import "./styles.css";
export default function App() {
const [genre, setGenre] = useState()
const artistslist = [
{value: 'ACDC', label: 'AC/DC'},
{value: 'LZ', label: 'Led Zeppelin'},
{value: 'Garth', label: 'Garth Brooks'},
{value: 'Alan', label: 'Alan Jackson'}
]
const genrelist = [
{value: 'rock', label: 'Rock'},
{value: 'country', label: 'Country'}
]
const handleArtistChange = (event) => {
console.log(event)
if (event.value === 'LZ' || event.value === "ACDC") {
setGenre({value: 'rock', label: 'Rock'})
} else {
setGenre({value: 'country', label: 'Country'})
}
console.log(genre)
}
const handleGenreChange = (event) => {
console.log("Genre Changed")
}
return (
<div className="App">
<Select options={artistslist} onChange={handleArtistChange} />
<Select options={genrelist} value={genre} onChange={handleGenreChange} />
</div>
);
}
解决方案
React-Select 不支持此行为。但是,您可以在任何更改时手动调用该函数:
const handleArtistChange = (event) => {
console.log(event)
if (event.value === 'LZ' || event.value === "ACDC") {
setGenre({ value: 'rock', label: 'Rock' })
} else {
setGenre({ value: 'country', label: 'Country' })
}
console.log(genre)
}
const handleGenreChange = (event) => {
console.log("Genre Changed")
}
const handleChange = (selector, event) => {
if (selector === "artist") {
handleArtistChange(event);
} else if (selector === "genre") {
handleGenreChange(event);
} else {
// Other logic
}
// Here you trigger whatever you want
}
return (
<div className="App">
<Select options={artistslist} onChange={event => handleChange("artist", event)} />
<Select options={genrelist} value={genre} onChange={event => handleChange("genre", event)} />
</div>
)
推荐阅读
- python - 是否有更快的方法来查找图像中每个像素邻居的差异?
- ios - 如何创建一个永远发射的可观察事件?
- python - 有没有办法在 PuLP 中实现 IRR 算法?
- javascript - Angular:在构建应用程序上获取两个主要块(重复块)
- sql - 从 TSV 文件(postgresql)读取时的数据类型
- azure - Azure 登录到多租户 AD 应用程序失败
- javascript - 如何使用 react-router-dom 重定向到一个全新的 URL?
- github - 恢复已删除的存储库 github 企业
- javascript - 替换数组中的数据
- windows - 在批处理文件中创建看门狗并在启动时运行它