晚上好,
我有一個電影串列/陣列,需要使用兩個值(已發布和類別)進行過濾。當前代碼允許用戶過濾同時選擇了兩個值的電影。但是我想解決的問題是,如果;
- 用戶選擇例如“動作”,它應該回傳所有具有類別動作的電影。
- 或者用戶選擇“1999”的另一種情況,顯示當年發行的所有電影。
- 它也不應該失去當前的功能,因為我希望允許用戶過濾單個值和組合值。
當前代碼:https : //codesandbox.io/s/focused-sun-2lkfx?file=/src/App.js
我看過過濾特定值的示例,但在用戶可以指定某些內容并向其添加另一個過濾器的情況下,我不知道如何處理它。
uj5u.com熱心網友回復:
這是一個如何過濾具有 2 個值的陣列的示例。
我還分叉了沙箱示例。 https://codesandbox.io/s/nifty-benji-p0n9m?file=/src/App.js
現在它應該按您的預期作業。
movies.filter((movie) => {
return (
isDateSelected(movie, filterPublished) &&
isCategorySelected(movie, filterCategory)
);
});
uj5u.com熱心網友回復:
您在 useEffect 中搞砸了一些東西,覆寫了結果變數。
我已經在沙箱叉中為你修復了它。
useEffect(() => {
//Filter options updated so apply all filters here
const result = array
.filter((item) =>
filterCategory.length ? filterCategory.includes(item.category) : item
)
.filter((data) =>
filterPublished.length ? filterPublished.includes(data.published) : data
);
setFilteredArray(result);
}, [filterPublished, filterCategory]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386033.html
