React Native:嵌套 JSON 对象浅拷贝(参考)不起作用
React Native : nested JSON object shallow copy (reference) not working
我有一个嵌套的 JSON 个看起来像 {"name", "children": [JSON objects]}
的对象。
我正在尝试向使用变量 path
、名称数组
找到的对象添加一个新子项
我的代码在我的 React Native 应用程序中不起作用,但它在 Chrome 控制台中起作用,这让我很困惑。它是否与 React Native 有关?如果是,我该如何解决?
在 Google 控制台中上传的代码产生了预期的结果:j.children[0].children[0] = 'test'
:
let j = {"name": "root", children: [{"name": "tag1", children: []}]};
let res = j;
const path = ["tag1"];
for (const name of path) {
for (const child of res.children) {
if (child.name == name) {
res = child;
break;
}
}
}
res.children.push("test");
console.log(j);
包装在 React Native 应用程序中的相同代码,在 Android 模拟器 (PIXEL_5_API_30) 上测试,产量
{"children": [{"children": [Array], "name": "tag1"}], "name": "root"}
这不是预期的行为([Array]
表示空数组)。
export default function App() {
const test = () => {
let j = {"name": "root", children: [{"name": "tag1", children: []}]};
let res = j;
const path = ["tag1"];
for (const name of path) {
for (const child of res.children) {
if (child.name == name) {
res = child;
break;
}
}
}
res.children.push("test");
console.log(j);
}
return (
<View>
<Button title="test" onPress={test} />
<StatusBar style="auto" />
</View>
);
}
检查好,确实[Array]
不是空数组,代码按预期运行。似乎 React Native 只显示一个深度的数组。
我有一个嵌套的 JSON 个看起来像 {"name", "children": [JSON objects]}
的对象。
我正在尝试向使用变量 path
、名称数组
我的代码在我的 React Native 应用程序中不起作用,但它在 Chrome 控制台中起作用,这让我很困惑。它是否与 React Native 有关?如果是,我该如何解决?
在 Google 控制台中上传的代码产生了预期的结果:j.children[0].children[0] = 'test'
:
let j = {"name": "root", children: [{"name": "tag1", children: []}]};
let res = j;
const path = ["tag1"];
for (const name of path) {
for (const child of res.children) {
if (child.name == name) {
res = child;
break;
}
}
}
res.children.push("test");
console.log(j);
包装在 React Native 应用程序中的相同代码,在 Android 模拟器 (PIXEL_5_API_30) 上测试,产量
{"children": [{"children": [Array], "name": "tag1"}], "name": "root"}
这不是预期的行为([Array]
表示空数组)。
export default function App() {
const test = () => {
let j = {"name": "root", children: [{"name": "tag1", children: []}]};
let res = j;
const path = ["tag1"];
for (const name of path) {
for (const child of res.children) {
if (child.name == name) {
res = child;
break;
}
}
}
res.children.push("test");
console.log(j);
}
return (
<View>
<Button title="test" onPress={test} />
<StatusBar style="auto" />
</View>
);
}
检查好,确实[Array]
不是空数组,代码按预期运行。似乎 React Native 只显示一个深度的数组。