【发布时间】:2017-11-07 07:52:53
【问题描述】:
这是响应数据。使用按增量和减量时,我需要存储每个项目的数量。
{name: "McChicken", type: "Non-Veg", price: 275, tax: 10}
{name: "Pizza", type: "Non-Veg", price: 275, tax: 10}
{name: "Burger", type: "Non-Veg", price: 275, tax: 10}
Redux 状态:在基于对象的存储中保存状态
所以它很容易根据密钥进行更新。
import * as types from '../actions/types';
var _ = require('lodash');
const INITIAL_STATE = {
data: {},
loading: false,
error: '',
cartData: {},
};
export default (state=INITIAL_STATE, action) => {
switch (action.type) {
case types.MENULIST_REQUEST_START:
return { ...state, loading:true, error: '' };
case types.MENULIST_SUCCESS:
const newItems = _.mapKeys(array, 'name')
return { ...state, data: newItems , loading:false, error: 'Success' };
case types.UPDATE_ITEM:
return { ...state, [cartData.name]: action.payload }
case types.DELETE_ITEM:
return _.omit(state, [cartData.name]: action.payload)
case types.MENULIST_FAILED:
return { ...state, data: {}, loading:false, error: 'Request failed' };
default:
return state;
}
}
当我调用更新和删除项目操作时出现错误。
错误:cartData 未定义
如果响应得到更新,我如何更新数量和管理状态?
【问题讨论】:
-
您正在进行计算成员访问。因此,将您的 cartData.name 包装在方括号中,如下所示:[cartData.name]
-
@darthaditya 试过了。但是得到 ReferenceError: cartData is not defined
-
你能从你的reducer中粘贴整个代码吗?
-
@darthaditya 更新帖子。请检查
-
即使你已经传播了状态对象,你仍然需要访问状态对象inside的cartData。所以正确的访问方法是[state.cartData.name]。 Spread 不会改变对象。
标签: javascript react-native redux react-redux state