简体   繁体   English

更新过滤器后如何呈现更新的列表

[英]How to render updated list after updating a filter

Whenever, user is checking the checkbox, the factoryQuery array is getting updated.每当用户选中复选框时, factoryQuery数组都会更新。 Search function is for filtering procurements array.搜索 function 用于过滤procurements数组。 I want the ProcurementList component to call search whenever factoryQuery is getting changed.我希望ProcurementList组件在 factoryQuery 发生更改时调用搜索。

Search Function:搜索 Function:

const search = () => {
        if(factoryQuery.length != 0){
        return procurements.filter(
            (procurement) =>
                factoryQuery.includes(procurement.data.factory_name.toLowerCase()));
        } else {
            return procurements; 
        }  
    };

Function called on checking a checkBox Function 调用检查复选框

const handleCheck = (e) => {
        var array = factoryQuery;
        if(e.target.checked){
            array.push(e.target.value.toLowerCase());
        }else{
            if(array.indexOf(e.target.value.toLowerCase()) != -1){
            array.splice(array.indexOf(e.target.value.toLowerCase()), 1);  
            }
        }
        setFactoryQuery(array);
    }

Component to render Procurements List:渲染采购列表的组件:

<ProcurementsList procurements={search(procurements)} />

You should call the search method inside a useEffect hook and add factoryQuery in dependency array, that way it rerenders everytime factoryQuery changs您应该在 useEffect 挂钩中调用 search 方法并将 factoryQuery 添加到依赖数组中,这样每次 factoryQuery 更改时都会重新呈现

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM