Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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
Reactjs React Redux存储-由所有组件访问_Reactjs_Redux_Components_Store - Fatal编程技术网

Reactjs React Redux存储-由所有组件访问

Reactjs React Redux存储-由所有组件访问,reactjs,redux,components,store,Reactjs,Redux,Components,Store,我在.NETMVC和knockoutjs的世界里呆了很多时间,现在对React和Redux还比较陌生。我很难理解存储是如何使用的,以及如何在父组件和子组件之间传递道具 我的第一个问题:如果一个值数组通过道具从父组件发送到子组件,这些组件是否进行深度复制并创建自己的数组版本?如果我们有一个相当大的值数组,我们希望多个孩子都能访问它,并将其作为道具发送,那么我们是在不必要地创建额外的数据,还是他们只是引用同一个数组 我不确定该商店是如何使用的,但它是否可以用于帮助上述场景?如果我们有一些值,比如一个

我在.NETMVC和knockoutjs的世界里呆了很多时间,现在对React和Redux还比较陌生。我很难理解存储是如何使用的,以及如何在父组件和子组件之间传递道具

我的第一个问题:如果一个值数组通过道具从父组件发送到子组件,这些组件是否进行深度复制并创建自己的数组版本?如果我们有一个相当大的值数组,我们希望多个孩子都能访问它,并将其作为道具发送,那么我们是在不必要地创建额外的数据,还是他们只是引用同一个数组

我不确定该商店是如何使用的,但它是否可以用于帮助上述场景?如果我们有一些值,比如一个更大的数组,我们希望多个组件子级访问这些值,那么它们可以从这个全局可访问的存储中提取它们吗

如果有人能帮我理解这些概念,我将不胜感激。在我的场景中,我正在处理一个由30名学生组成的表格,每个学生都会收到一个数据数组,以帮助填充一些行。我担心我们正在做的是给每个学生提供大量的数据,如果他们可以从家长或这个全球存储中获取,他们不需要这些数据

    <StudentTable
      onSelectAllStudents={this.props.handleSelectAllStudents}
      handleLoadStudentResponses={this.props.handleLoadStudentResponses}
      structures={this.props.structures}
      lessons={this.props.lessons}
      activities={this.props.activities}
      students={this.props.students} />
他们正在创建一个表,其中每一行都是一个学生。这个表格包含大量的数据,这是一个完全不同的问题。然而,本质上我们所做的是为每个学生展示他们是否完成了一项特定的活动。正如您在屏幕截图中看到的,它们构建了一个相当复杂的表。在StudentTable中,他们循环遍历学生,并为活动列表中发送的每一行创建一个学生组件,以便在表中他们可以根据活动是否发布在单元格中着色。我主要担心的是,当每个学生组件获得活动列表时,它会向内存中添加大量数据,而不是那些大量学生组件仅引用某个父数组


根据我看到的语法,孩子们会收到一个指针。不是新的东西。关于向30名学生提供整个阵列的问题,您没有正确处理数据传递。给我们看一段代码片段,我可以发表更多评论

此外,redux也没有帮助。它可以被使用,但它的杀伤力过大,增加了不必要的复杂性。具有子-父关系的组件可以很容易地通过正常的传递进行处理。如果组件没有任何直接关系,则Redux是转到选项

编辑:参照对象中的图元时,将复制图元并指向对象

const obj = {arrayObject: [], primitiveBoolean: true}
const primitive = obj.primitiveBoolean
const array = obj.arrayObject
primitive = false
console.log(obj.primitiveBoolean); //still true
array.push(10)
console.log(obj.arrayObject); // [10] push changed object's array

这是你应该从教程中学到的东西。你的问题范围很大。我想我的主要问题是,当在道具之间发送到子组件时,复制是如何发生的,其次是存储应该是所有组件的全局存储。我已经看过了一些教程,但这是我不理解的两件事。我们将向每个学生发送一大串活动作为道具。同样的活动列表也可以用来填充“选择活动过滤器”下拉列表。同样,当我使用react-dev工具时,我担心的是,我进入了一个特定学生的活动副本,更改了一个真/假值,正如你在屏幕截图中看到的,它更改了第一课下第一个单元格的颜色,我认为这是真的学生活动数组没有使用指针之类的东西。