【发布时间】:2017-01-20 18:32:42
【问题描述】:
我的问题可能听起来有点愚蠢,我还在学习 react 和 redux。
我的应用中有user,这是我的用户状态模式:
user : {
error,
isAuthed,
authToken,
isFetching,
currentRole,
roles : ['role', 'role'],
paymentsInfo: [{invoice}, {invoice}, {invoice}]
}
这是我的用户减速器:
function user(state = initialUserState, action) {
switch (action.type) {
case 'FETCHING_USER': {
return {
...state,
isFetching : true
}
}
case 'FETCHING_USER_ERROR': {
return {
...state,
isFetching : false,
error : action.error
}
}
case 'FETCHING_USER_SUCCESS': {
return {
// update user state
}
}
// payments reducer
case 'FETCH_PAYMENT_DETAILS': {
return {
...state,
payments : payments(state.payments, action)
}
}
case 'FETCH_PAYMENT_SUCCESS': {
return {
...state,
payments : payments(state.payments, action)
}
}
default:
return state
}
}
我在不同的文件中维护 Payments reducer,user reducer 中的最后 3 个案例与 payments reducer 的操作相匹配:
function payments(state = initialPaymentState, action) {
switch (action.type) {
case 'FETCH_PAYMENT_DETAILS' : {
return {
...state,
isFetching : true
}
}
case 'FETCH_PAYMENT_ERROR' : {
return {
...state,
isFetching : false,
error : action.error
}
}
case 'FETCH_PAYMENT_SUCCESS' : {
return {
...state,
isFetching : false,
error : '',
invoices : action.paymentDetails
}
}
default:
return state
}
}
我没有为 payments 维护单独的状态,但是当我从 API 获取付款数据时,我需要在 user 状态下更新它。现在我的问题是,有没有一种方法可以将 user 和 payments 减速器组合在一起,而无需为 payments 创建单独的状态
【问题讨论】:
-
你是什么意思 - 将它们组合在一起?
-
@Radio- 通过组合我的意思是我不想在
userreducer 中编写payments方法的情况,同时我希望它们都在单独的文件中,payments不应该在主状态树中创建新实例应该是user的一部分(参见架构)
标签: redux