Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJS搜索和下拉过滤器已同步_Javascript_Reactjs - Fatal编程技术网

Javascript ReactJS搜索和下拉过滤器已同步

Javascript ReactJS搜索和下拉过滤器已同步,javascript,reactjs,Javascript,Reactjs,我想同步的ReactJS页面上有一个搜索和下拉列表选项。这意味着无论何时从下拉选项中选择一个元素,屏幕上的元素都只显示选定的过滤器 搜索输入当前有效,但我对选择选项有问题。我找到了一个select过滤器的工作示例(),但在为我的解决方案调整它时遇到了问题 我认为此功能是过滤数据的主要功能,但我很不确定: changeOption: function(type, e) { var val = e.target.value; this.props.changeOption(val,

我想同步的ReactJS页面上有一个搜索下拉列表选项。这意味着无论何时从下拉选项中选择一个元素,屏幕上的元素都只显示选定的过滤器

搜索输入当前有效,但我对选择选项有问题。我找到了一个select过滤器的工作示例(),但在为我的解决方案调整它时遇到了问题

我认为此功能是过滤数据的主要功能,但我很不确定:

changeOption: function(type, e) {
    var val = e.target.value;
    this.props.changeOption(val, type);
  }
如何根据“选择选项”值筛选数据


下面是我的代码的一个JSFIDLE示例:

您需要在select上添加一个事件侦听器,以便在值发生更改时捕获它。例如:

<select
  onChange={ () => this.handleSelectChange() }
  className="category-select" name="categories"
>
  {text.map(info => (
    <option value={info.role}>{info.role}</option>
  ))}
</select>
this.handleSelectChange()}
className=“类别选择”name=“类别”
>
{text.map(信息=>(
{info.role}
))}
然后,您需要在组件状态下保存select的当前值,并根据该值过滤列表,与搜索相同


看。可能重复。

您需要在select上添加一个事件侦听器,以便在值更改时捕获该值。例如:

<select
  onChange={ () => this.handleSelectChange() }
  className="category-select" name="categories"
>
  {text.map(info => (
    <option value={info.role}>{info.role}</option>
  ))}
</select>
this.handleSelectChange()}
className=“类别选择”name=“类别”
>
{text.map(信息=>(
{info.role}
))}
然后,您需要在组件状态下保存select的当前值,并根据该值过滤列表,与搜索相同


看。可能重复。

您必须将所选值存储在您所在州的
select
标记中,并根据它过滤输出:

国家:

        this.state = {
            isLoading: false,
            data: [],
            searchString: '',
            roleFilter: null
        };
触发功能:

    changedRole = ev => {
        this.setState({ roleFilter: ev.target.value })
    }
更改事件:

<select className="category-select" name="categories" onChange={this.changedRole}>

您必须将所选值存储在您的状态下的
选择
标记中,并根据它过滤输出:

国家:

        this.state = {
            isLoading: false,
            data: [],
            searchString: '',
            roleFilter: null
        };
触发功能:

    changedRole = ev => {
        this.setState({ roleFilter: ev.target.value })
    }
更改事件:

<select className="category-select" name="categories" onChange={this.changedRole}>


1。将
onChange={this.handleChange}
添加到您的
中。它现在可能已经可以工作了,但您需要修复另外两个小错误:在渲染中,您需要
text=data.filter(…
(您正在筛选
text
)在你的主JSX中,你需要
data.map
来获得选项:@ChrisG它现在可以工作了,谢谢。我只是想问你为什么要用选项的数据来更改文本?1.添加
onChange={this.handleChange}
到您的
。它现在可能已经工作了,但您需要修复另外两个小错误:在渲染中,您需要
text=data.filter(…
(您正在过滤
文本
)在你的主JSX中,你需要
数据。map
作为选项:@ChrisG,它现在可以工作了,谢谢。我只是想问你为什么用选项的数据更改文本?你检查过你的代码了吗?在你使用下拉菜单后,你不能在不重新加载页面的情况下访问完整的元素。是的,我显然测试了我的代码,你从来没有说过你想要o返回完整列表。我用一个额外的空白选项编辑了我的答案,这解决了您的问题。您是否检查了代码?使用下拉列表后,如果不重新加载页面,您将无法访问完整元素。是的,我显然测试了我的代码,您从未说过要返回完整列表。我用额外的选项编辑了我的答案空白选项,解决您的问题