React 中的下拉菜单,通过列表过滤

Dropdown menu in React, filter through list

我正在构建一个 react 国家/地区应用程序,我正在尝试通过列表按地区过滤。我想使用下拉菜单。我试过使用 react select,创建一个新组件,这是我的代码

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;

我的问题是,我无法获取更改为选项 selected 的值,因此我无法过滤从 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>
    )

谢谢!最后,我使用了 react-select 组件,它自己解决了这个问题。