reactjs - reactjs redux中如何排序和过滤
问题描述
我有一个来自后端的数组中的项目列表。我在我的应用程序中使用 redux 进行状态管理。在这里,我有一个下拉列表和一个要搜索的文本字段。当用户从数组中的下拉项目中选择任何项目时,将使用相应的项目进行排序,然后从该排序的项目中,用户过滤器使用相应的搜索文本过滤数据。这看起来像这样。我不知道应该排序或过滤来解决这种天气。任何帮助都会很棒。
这就是我的代码的样子
const Administrator = (props) => {
const [menuValues, setMenuValues] = React.useState("");
const [tableData, setTableData] = useState([]);
const [filterText, setFilterText] = useState("");
const DataReceived = (state) =>
state.AllUsers.Admin.site_managers.data._embedded;
const selectedData = useSelector(DataReceived, shallowEqual);
const selectedDataAgain = selectedData
? selectedData.adminUserResourceList
: null;
React.useEffect(() => {
props.getUserLoadSiteManagers(props.accessToken);
setTableData(selectedDataAgain);
}, []);
function handleChange(event) {
if (event.target.value) {
setMenuValues(event.target.value);
} else {
setMenuValues("all");
}
}
const handleFilterText = (e) => {
e.preventDefault();
setFilterText(e.target.value);
};
const handleFilterClick = () => {
console.log(filterText);
};
return (
<Container maxWidth="lg">
<div>
<Select
value={menuValues}
onChange={handleChange}
input={
}
>
<MenuItem value="all">
<em>All</em>
</MenuItem>
<MenuItem value={"name"}>Name</MenuItem>
<MenuItem value={"designation"}>Designation</MenuItem>
{/* <MenuItem value={"team"}>Team</MenuItem> */}
<MenuItem value={"userType"}>User</MenuItem>
<MenuItem value={"permission"}>Permission</MenuItem>
</Select>
</div>
<div>
<TextField
onChange={handleFilterText}
value={filterText}
/>
</div>
</div>
<div className={classes.dense}>
<ButtonBig onClick={handleFilterClick} title="Apply Filter" />
</div>
</Card>
<Table
data={TableData}
isItemSelected
numSelected={() => numSelected(numSelected)}
onClick={SelectedId(SelectedId)}
/>
</Container>
);
};
解决方案
你可以同时做这两个。在您构建表数据的地方,您可以放置如下内容:
<Table
data={{...TableData.filter((item) => filterText ? <here you should filter the item> : true)}
.sort(item => item[menuValues] > item[menuValues] /*here made the comparation to sort the list*/)}
isItemSelected
numSelected={() => numSelected(numSelected)}
onClick={SelectedId(SelectedId)}
/>
推荐阅读
- docusignapi - 将管理员用户添加到 powerforms DocuSign
- java - 翻转log4j时如何在旧日志文件名中使用文件创建日期
- vim - vim/gvim 格式 (%!column -t) 不起作用,而是过滤所有行
- typescript - 创建映射类型时引用索引类型?
- python - 在 python 中从 MediaCloud 中检索文本文章的正文
- opencv - Cuda opencv 需要更多时间
- scala - java.io.FileNotFoundException:文件不存在:hdfs://data.xxxxx.avro
- reactjs - 在 ReactJs 中动态地将值放入表中
- php - 使购物车页面上的 Woocommerce 商店消息在 6 秒后消失
- masstransit - 当消费者处于重试状态时停止总线以某种方式使消息移动到_skipped队列