reactjs - React 中的下拉菜单,通过列表过滤
问题描述
我正在构建一个休息国家的应用程序,我正在尝试通过列表按地区过滤。我想使用下拉菜单。我试过使用反应选择,创建一个新组件,这是我的代码
const DropdownMenu = (props) => {
const options = [
'', 'Africa', 'America', 'Asia', 'Europe', 'Oceania'
];
const defaultOption = options[0];
const handleFilterInput = (event) => {
let value = event.target.options;
props.handleRegionSearch(value);
};
return(
<div>
<Select options={options} onChange={handleFilterInput} value={defaultOption} placeholder="Select a region"/>
</div>
)
}
export default DropdownMenu;
我的问题是,我无法将值更改为所选选项,因此我无法过滤从 api 获取的列表。有没有人对此有可能的解决方案?谢谢
解决方案
您设置的值错误
value={defaultOption}
这个默认选项永远不会改变。
您可以做的是从 onChange() 捕获当前值并将该值设置在某处(最好在状态中),然后将该存储的值用作下拉组件的值
像这样的东西。
const options = [
'', 'Africa', 'America', 'Asia', 'Europe', 'Oceania'
];
const [selectedValue , setSelectedValue ] = useState(options[0]);
const handleFilterInput = (event) => {
let value = event.target.options;
setSelectedValue(value);
props.handleRegionSearch(value);
};
return(
<div>
<Select options={options} onChange={handleFilterInput} value={selectedValue} placeholder="Select a region"/>
</div>
)
推荐阅读
- python - 如何使用 Pyspark 和 NLTK 计算 POS 标签?
- node.js - 如何使用 AWS X-Ray 跟踪 lambda 调用 lambda?
- javascript - 从路由保护重定向和从组件内的mounted()生命周期钩子重定向有区别吗?
- javascript - 柏树中的应用程序重定向,外部没有
- build.gradle - 下载错误“jackson-coreutils-1.6.jar”
- node.js - Discord.js 媒体频道
- python - 使用python从网站中提取链接,scrapy不起作用
- java - 独立 Servlet 5 容器中的 JAX-RS (Jersey) API 无法启动
- async-await - Angular 11 等到订阅完成获取数据
- django - 使用 React Native 和 django-modeltranslation 更改语言