【发布时间】:2017-06-13 00:32:24
【问题描述】:
我试图简单地对 mapStateToProps 中的 redux 存储数据进行排序,类似于 Dan Abramov 的 Egghead.io 视频中的排序方式:https://egghead.io/lessons/javascript-redux-colocating-selectors-with-reducers
我的问题是,最初状态返回未定义(因为它是异步获取的),那么处理这个问题的最佳方法是什么?当前代码如下(_是ramda库):
const diff = (a, b) => {
if (a.name < b.name) {
return -1
}
if (a.name > b.name) {
return 1
}
return 0
}
const mapStateToProps = (state) => {
return {
transactions: _.sort(diff, state.transactions.all),
expenditure: state.expenditure.all,
income: state.income.all
}
}
我认为 transactions.all 最初应该是一个空数组(这意味着代码可以工作),因为在 reducer 中设置了初始状态:
const INITIAL_STATE = { transactions: { all: [] }, transaction: null }
export default function (state = INITIAL_STATE, action) {
switch (action.type) {
case FETCH_TRANSACTION:
return { ...state, transaction: action.payload.data }
case FETCH_TRANSACTIONS:
return { ...state, all: action.payload.data }
case EDIT_TRANSACTION:
return { data: action.data }
case ADD_TRANSACTION:
return { data: action.data }
case DELETE_TRANSACTION:
return { ...state }
default:
return state
}
}
提前致谢。
【问题讨论】:
-
我不确定,但 INITIAL_STATE 没有
transations键,所以不应该是_.sort(diff, state.all)吗? -
嗯是的...对于其他减速器也有一个 all,所以也许我需要更明确地为每个减速器:defaultState = { transactions: { all: []},exploration: { all: [] }};谢谢,我试试这个