Javascript 更新reducer中对象的状态
我是新手。在这里,我有一个功能,可以添加或删除三个不同的行。我有一个减速器,就像Javascript 更新reducer中对象的状态,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我是新手。在这里,我有一个功能,可以添加或删除三个不同的行。我有一个减速器,就像 const initialState = { Low: [ { id: 'L0', technologyId: 0, technology: '', type: '', count: '', level: 'EASY' } ]
const initialState = {
Low: [
{
id: 'L0',
technologyId: 0,
technology: '',
type: '',
count: '',
level: 'EASY'
}
],
Medium: [
{
id: 'M0',
technologyId: 0,
technology: '',
type: '',
count: '',
level: 'Medium'
}
],
High: [
{
id: 'H0',
technologyId: 0,
technology: '',
type: '',
count: '',
level: 'Tough'
}
],
所以,在这里,我想把它作为一个泛型,所以,我试图在点击加号时添加对象,在-,上删除。所以
在这里,我使用
const tempObj = {
id: tempvar + id,
technologyId: 0,
technology: temp[0].technology,
type: type,
count: '',
level: addtype
}
我现在创建这个对象取决于我在那个特定数组中添加的addType
我是这样做的
const addData = [...this.props.lowData[addtype], tempObj];
this.props.addNewTech(addData);
所以,这里这个…this.props.lowData[addtype]
返回的是一个对象而不是数组,这就是问题所在吗?如果是,它应该返回一个数组而不是对象,但这是如何返回对象而不是数组的。
我的道具,低数据就像
一个具有三个不同数组的对象,我的意思与reducer相同,但每次我添加它时,它只在
Low
数组中添加该元素,而不是在medium或high数组中添加该元素。有人能帮我解决这个问题吗?问题出在减速机中,您只更新了Low
属性。您需要检查哪些属性需要更新。为此,您可以像这样将addtype
传递给动作创建者
this.props.addNewTech({ addData, addtype });
然后是行动中的创造者
export function addNewTech(data) {
return {
type: ADD_NEW,
data //is equavalent to data: data (ES6)
}
}
然后在reducer中动态更新对象
case ADD_NEW:
return {
...state,
//here choose the property to be updated dynamically
//replace Low: action.data with below line
[action.data.addtype]: action.data.addData,
error: false,
}
**注意这里
[action.data.addtype]:action.data.addData
我们在ES6中使用计算属性名。这个.props.lowData看起来像什么。你能发布它的屏幕截图吗?当然我能发布。@Shivam添加了低数据请检查你到底想要实现什么?同时显示相应的动作和减速器代码。实际上,点击add按钮我只想在相应的数组中添加一个元素,比如,如果我在Low中添加一个元素,那么它应该被添加到Low数组中,其他的也一样。但是现在,它每次都被添加到Low中。回答很好。非常感谢您抽出时间:-)