Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React Redux中的数组中添加一个元素_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 在React Redux中的数组中添加一个元素

Javascript 在React Redux中的数组中添加一个元素,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我有一个项目,其中我使用了react-redux,我有一个reducer,它应该在数组中添加一个元素并返回新数组。我怎么能做到 /*----减速器----*/ 案例变更事件用户: 返回{…状态,用户:有效负载}; /*----这是我绝望的尝试----*/ userClickHandler(){ const{id,homefool,avatarUrl,login}=this.props; const user={id,homefool,avatarUrl,login}; this.props.c

我有一个项目,其中我使用了
react-redux
,我有一个reducer,它应该在数组中添加一个元素并返回新数组。我怎么能做到

/*----减速器----*/
案例变更事件用户:
返回{…状态,用户:有效负载};
/*----这是我绝望的尝试----*/
userClickHandler(){
const{id,homefool,avatarUrl,login}=this.props;
const user={id,homefool,avatarUrl,login};
this.props.changeEventUsers([…user]);//[]
this.props.changeEventUsers(this.props.event.users.push());//编号

}
直接在减速器中添加

从您的组件

this.props.changeEventUsers(newUser); // add the new user
在减速器中

return { ...state, users: [...state.users, payload] }; 

我假设“有效负载”包含来自操作的信息,默认情况下,
用户
数组使用空数组值初始化
[]

我不确定我是否正确理解您,但根据我的理解,您的问题的解决方案如下所示:

case CHANGE_EVENT_USERS:
  return { ...state, users: [ ...state.users, action.payload ] };

我更喜欢concat的语法。 在你的工作中,你应该:

case CHANGE_EVENT_USERS:
  return users.concat(action.payload);
使用
concat()

[1,2,3,4]

注意,我在这里使用
const
来强调初始数组没有变异

上述方法的优点在于,它可以用于将操作链接在一起。
result=initialArray.concat(..).filter(..).concat(..)
(其中
表示跳过的代码详细信息)

您还可以使用
concat
,将数组作为参数传入:
newArray=concat(initialArray,[elementToadd])

或者使用es7扩展运算符语法进行数组连接:
newArray=[…initialArray,elementToAdd,…[5],[6]]

[1,2,3,4,5,6]]

使用
将所提供数组的各个元素发送到新数组中的元素;如果没有点,提供的数组本身就是元素

因此,在您的案例中,所讨论的行可以写为:

我找到了我的解决方案:

this.props.changeEventUsers([...this.props.event.users, user]);

使用push方法array@Hushme,也在我分配的孔数组的初始状态中进行了尝试,这就是为什么我尝试不处理reducer@RamzanChasygov试试上面的例子。您应该将整个数组保存在reducer中,并且只在那里操作它。这就是减速器的用途。您不应该在react组件内部执行操作。因此,在定义初始状态的减速机开始时,使用
用户定义它:[]
,后续添加应通过
更改事件\u用户
操作在初始状态下,我需要使用对象,
用户
就是其中一个关键
this.props.changeEventUsers([...this.props.event.users, user]);