【发布时间】:2020-12-01 03:24:34
【问题描述】:
我有一个我想实现的搜索和过滤功能,用户将搜索项目,它们将在平面列表中返回,当用户清除搜索框或搜索框为空时,我希望初始状态为被退回。
我试过这个: 该功能确实过滤了商店,但是当我清除它时,原始状态项不再存在。返回的是搜索值
search: (state, { payload }) => {
const itemsToFilter = state.filter((item) => {
let itemLowerCase = item.item_description.toLowerCase();
let searchItemToLowerCase = payload.item_description.toLowerCase();
return itemLowerCase.indexOf(searchItemToLowerCase) > -1;
});
if (payload.item_description.length !== 0) {
return itemsToFilter;
} else {
return state;
}
},
这是我的组件函数
import {useDispatch, useSelector} from 'react-redux';
const [searchValue, setSearchValue] = useState("");
const items = useSelector(state => state.items)
const dispatch = useDispatch()
const searchItems = (e) => {
const text = e.nativeEvent.text;
setSearchValue(text);
dispatch(
searchItemAction({
item_description: searchValue,
})
);
};
<TextInput value={searchValue} onChange={searchItems} />
【问题讨论】:
-
“原始状态项目”应该是什么?如果您需要保留一组原始项目,最好将它们保存为静态数据并在某些操作时调用它。
标签: reactjs react-native redux redux-toolkit