reactjs - 带有过滤器和排序的 Redux 分页
问题描述
我正在学习 redux,我想用排序和过滤属性实现分页。
这是 api 网址 http://localhost:3001/cars?manufacturer=Fiat&color=white&sort=asc&page=1
还有制造商名单http://localhost:3001/manufacturers
由于最初所有的下拉菜单都将具有默认值,并且页面将是1
将有多个减速器来获取制造商、颜色和汽车。
//fetchManufacturerReducer
const initialState = {
manufacturers:[]
};
//fetchCarsListReducer
const initialState = {
manufacturers:"Fiat",
color:"Black",
data:{
cars:[],
currentPage:1,
totalPage:10
}
};
问题:
这是正确的方法吗?
我如何控制请求的顺序 - 首先获取制造商列表、颜色列表,然后获取带有默认值和页面的 carsList
1
当用户将颜色更改为
Black
我如何更改color
activeColor 以发送新的fetchCarsList
?在某个阶段,我必须在减速器之间共享状态,这似乎很难做到 - 将所有内容放在单个减速器中会更好吗?
解决方案
Redux 就是关于存储/更改您的数据(状态)并轻松访问它 - 如果感觉不那么容易 - 您需要更改减速器的组成,但是如果您只是从 redux 开始,一切都会发生)
TLDR:
让我尝试以相反的顺序回答
- 将所有内容放在单个 Reducer 中会更好吗?
我有与刚开始使用 redux 的队友合作的经验,并提出了将所有过滤/排序逻辑保留在一个巨大的(超过 700 loc)reducer 中的想法。时间和功能来来去去,后来很明显,在巨大的减速器中,每次新动作到达时管理大量道具有很大的缺点,当它开始成长时,这被证明是一个非常容易出错的地方。
拥有巨大的减速器也有团队中其他人难以理解的缺点。
- 当用户将颜色更改为黑色时,我如何更改颜色 activeColor 以调度新的 fetchCarsList?
您不能在 reducer 之间分派数据更改。但是您可以通过将适当的操作分派给多个减速器来实现您想要的
- 我如何控制请求的顺序 - 首先获取制造商列表、颜色列表,然后获取带有默认值和页面的 carsList
Redux 是关于保留数据的——reducers 是关于借助动作的突变数据,而不是关于基于数据或获取数据的业务逻辑)
- 这是正确的方法吗?
一种好的方法是获得一个不会让您提出问题 (3) (4) 的解决方案,因为这些问题一起表明减速器(和数据!)的组合不正确。
我不能给你更多建议,因为组合在很大程度上取决于如何访问数据,但是一旦你看到你如何访问/更改数据的重复模式,你可以从你拥有的东西开始,然后再改变它。
推荐阅读
- gcc - 如何美化我编译的 FFmpeg 二进制文件?
- python - 在 Python 中浏览我的循环时遇到问题
- javascript - 我可以将点击事件绑定到舞台并双击其中的元素吗?
- c - C Lua 绑定 Windows VS2017
- asp.net-core - Asp.net 核心数据库连接在本地 IIS 主机上不起作用
- javascript - 如何将日期转换为给定格式?
- javascript - Puppeteer 和错误处理中的评估失败错误
- angular - 如何使离子模态“解雇”方法起作用
- filter - 从 CgridView 过滤器 -Yii1 中的过滤器中删除空选项
- python - Python 输出:如何删除新行的缩进?