【问题标题】:Applying multiple filters to the state in React将多个过滤器应用于 React 中的状态
【发布时间】:2020-01-02 16:12:32
【问题描述】:

我有一个组件可以呈现三个多选框(姓名、工作、汽车)和一个数据网格。用户可以在三个过滤器中选择多个选项,然后过滤数据网格。

首先,我从useEffect 块中的远程服务器获取数据,并且数据网格呈现没有应用任何过滤器。接下来,用户可以选择一个(或两个或三个)过滤器,然后更新数据网格。对于每个更新数据网格的过滤器,我都有一个 onChange 函数。以下是我过滤数据网格的方式。

const onChange = () => filterbyName(filterByJob(filterByCar(data)))

其中data 是我在初始组件加载时获取的数据。

每当用户选择任何一个选项时,我都必须同时应用三个过滤器,例如作业,所选作业过滤器现在保存在状态中。姓名和汽车也是如此。

我的问题是如何避免三个嵌套函数调用,有没有更好的方法呢?

【问题讨论】:

  • 嗨,使用selectors 可能对您的用例有用。我会选择github.com/reduxjs/reselect,这确实是一个很棒的选择器库

标签: reactjs


【解决方案1】:

filterbyName、filterbyJob 和 filterbyCar 函数里面有什么?

如果您每次用户选择新过滤器时都调用 api,则可以将选定的过滤器传递给 api

但如果您只是更新给定数据,请将 api 数据置于状态,并在您的渲染方法中根据所选过滤器过滤数据 这是一个例子:https://codesandbox.io/s/compassionate-payne-e0261

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2021-09-02
    • 2019-05-18
    • 1970-01-01
    • 2017-10-27
    • 2019-12-12
    • 2014-10-21
    相关资源
    最近更新 更多