Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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:是否有方法引用同一组件中的另一个对象';谁的构造函数?_Javascript_Reactjs_State - Fatal编程技术网

Javascript React:是否有方法引用同一组件中的另一个对象';谁的构造函数?

Javascript React:是否有方法引用同一组件中的另一个对象';谁的构造函数?,javascript,reactjs,state,Javascript,Reactjs,State,我有两个对象处于相同组件的此状态: 对象1是一组键:值对。 对象2是一个对象数组。每个内部对象再次包含key:value对,但其中一对应该引用存储在第一个对象中的值: this.state = { Object 1: { key 1: 1, key 2: 2, key 3: 3 }, Object 2: [ { key 1: "..

我有两个对象处于相同组件的此状态:

对象1是一组键:值对。
对象2是一个对象数组。每个内部对象再次包含key:value对,但其中一对应该引用存储在第一个对象中的值:

this.state = {
        Object 1: {
          key 1: 1,
          key 2: 2,
          key 3: 3
        },

        Object 2: [
            {
                key 1: "...",
                key 2: value of e.g. Object 1 - key 3
            },
            {
             ...
            }
        ]
    };
有没有办法从第二个对象直接引用第一个对象?我唯一想到的另一种方法是将第一个对象作为道具传递给另一个类,但这有点不切实际,因为这是理想情况下包含两个对象的顶级元素


我不想将所有值存储在同一个对象中,因为两个对象都在不同的元素中渲染。

您可能需要尝试以下方法:

this.state={}
this.state.Object_1={
关键1:1,
关键2:2,
按键3:“就是这样”,
}
this.state.Object_2=[
{
键1:“…”,
key_2:this.state.Object_1.key_3,
},
{
},
];
console.log(this.state)As状态应该是可预测和可序列化的IMHO是在运行时为对象添加水合物的更好解决方案:

this.state={
目标1:{
关键1:1,
关键2:2,
关键3:3
},
目标2:[
{
键1:“…”,
},
]
};
//水合物法
getObject2=()=>this.state.Object2.map(
obj=>({…obj,key2:this.state.Object1.key3})
)
log(getObject2());
//模拟设置状态()
this.state.Object1.key3=“测试”

log(getObject2())可以,但这取决于对象1和对象2之间的关系,以确定最佳方式。所以我们需要一个具体的例子来了解在这种情况下什么是合适的。通常,我会使用对象1中的键作为对象2中键2的值。如果您使用对象1中某个键的值而不是键本身,那么对象1一开始可能就过时了。当您开始需要在应用程序中执行此类操作时,最好使用单独的库来管理应用程序状态(例如redux)。在这种情况下,您可以直接从全局状态中提取任意多个组件中的本地道具。Shilly:Object2数组中第一个对象的键2应该指向Object1的键3的值。我正计划这么做。理想情况下,我会通过REST和SpringMVC将它与Java后端连接起来,但到目前为止,我还没有成功实现这一点。为什么不使用局部变量(在构造函数中)来实现这两个功能呢?在你的问题中,我看不到任何东西可以解释为什么从对象2引用对象1是必要的。我们缺少什么上下文?我发现这个答案很有趣,它对我有效。这是我尝试的第一件事,我得到了错误:“TypeError:无法读取未定义的属性”…。“我再次尝试了一次,但没有成功,错误仍然是一样的。”。TypeError:无法读取未定义的属性“能力”