JavaScript对象数组未正确导入

JavaScript对象数组未正确导入,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我将此对象数组定义为: export const trace: IStackTrace[] = [ { ordered_globals: ["c"], stdout: "", func_name: "<module>", stack_to_render: [], globals: { c: ["REF", 1] }, heap: { "1": ["ARRAY", 1, ["REF", 2]],

我将此对象数组定义为:

export const trace: IStackTrace[] = [
  {
    ordered_globals: ["c"],
    stdout: "",
    func_name: "<module>",
    stack_to_render: [],
    globals: {
      c: ["REF", 1]
    },
    heap: {
      "1": ["ARRAY", 1, ["REF", 2]],
      "2": ["ARRAY", 2, null]
    },
    line: 2,
    event: "return"
  },
  {
    ordered_globals: ["c", "d"],
    stdout: "",
    func_name: "<module>",
    stack_to_render: [],
    globals: {
      c: ["REF", 1],
      d: ["REF", 3]
    },
    heap: {
      "1": ["ARRAY", 1, ["REF", 2]],
      "2": ["ARRAY", 2, null],
      "3": ["ARRAY", 1, ["REF", 1]]
    },
    line: 2,
    event: "return"
  }
];
这一准则有效

const StackTraceView = (props: IProps) => {
   const [stepNumber, setStepNumber] = useState<number>(0);
   const trace = ...
   const currentTrace = trace[stepNumber];
   // ...
}
const StackTraceView=(道具:IProps)=>{
常量[stepNumber,setStepNumber]=useState(0);
常量跟踪=。。。
const currentTrace=跟踪[步数];
// ...
}
这是不可能的

import { trace } from "./Examples";

const StackTraceView = (props: IProps) => {
   const [stepNumber, setStepNumber] = useState<number>(0);
   const currentTrace = trace[stepNumber];
   // ...
}
从“/Examples”导入{trace};
常量StackTraceView=(道具:IProps)=>{
常量[stepNumber,setStepNumber]=useState(0);
const currentTrace=跟踪[步数];
// ...
}

在我看来,这些对象是一样的。但我的观点不同意

当我在React组件中如上所述声明和初始化此变量时,此变量将按预期工作,并且我的显示将显示跟踪。但是,当我将此对象放入另一个文件并导入时,或者如果我在“全局”空间中声明此对象,则该对象的深层属性似乎为空,并且显示中断

我不知道在函数范围内声明这个深层对象数组和导入它有什么区别。我尝试了深层对象克隆,但仍然得到了相同的结果

任何有助于理解正在发生的事情的人都将不胜感激


编辑:添加进一步的上下文。真正的问题是,在函数内声明变量与在函数范围外声明变量时使用变量之间有什么区别。

我发现如果像以前一样导入对象数组,那么我运行:

const traceJson: string = JSON.stringify(trace);
// then
const traceObject = JSON.parse(traceJson);
// ...

这是正确的。我仍然不知道这是什么原因造成的。它必须是我要导入的对象的格式。不知何故,函数必须纠正JSON异常,而在函数作用域之外,它不会

如果有人发现我的JSON有问题,并且/或者可以告诉我这些作用域之间的区别,我很乐意了解,并将标记您的答案为已接受


谢谢大家的帮助。

我发现如果像以前一样导入对象数组,那么我会运行:

const traceJson: string = JSON.stringify(trace);
// then
const traceObject = JSON.parse(traceJson);
// ...

这是正确的。我仍然不知道这是什么原因造成的。它必须是我要导入的对象的格式。不知何故,函数必须纠正JSON异常,而在函数作用域之外,它不会

如果有人发现我的JSON有问题,并且/或者可以告诉我这些作用域之间的区别,我很乐意了解,并将标记您的答案为已接受


谢谢大家的帮助。

你能粘贴你的导入声明吗?我看你从来没有导出过
跟踪
。。。如果您不导出它,它怎么会被导入?:)是的,声明现在在我的帖子里。所以我用export const trace导出。。。像这样导入,它就不起作用了。否则,如果我将这个变量声明移到函数上方,它仍然不起作用。为了更清楚,我在帖子中添加了导出。但这并不是因为我有编译错误,甚至不是运行时错误。如果我在函数中声明变量或将其放在另一个作用域中,我会得到不同的结果。你需要向我们展示你是如何“测试”它的。向我们展示物品(全部),而不仅仅是一张照片,一张照片的前后。向我们展示您正在应用此功能的视图,该视图显示了它不起作用的原因。指出你看到的结果“错误”的原因。你能粘贴你的导入语句吗?我看不到你曾经导出过
跟踪
。。。如果您不导出它,它怎么会被导入?:)是的,声明现在在我的帖子里。所以我用export const trace导出。。。像这样导入,它就不起作用了。否则,如果我将这个变量声明移到函数上方,它仍然不起作用。为了更清楚,我在帖子中添加了导出。但这并不是因为我有编译错误,甚至不是运行时错误。如果我在函数中声明变量或将其放在另一个作用域中,我会得到不同的结果。你需要向我们展示你是如何“测试”它的。向我们展示物品(全部),而不仅仅是一张照片,一张照片的前后。向我们展示您正在应用此功能的视图,该视图显示了它不起作用的原因。指出是什么让你看到的结果“错误”。还有一些事情你没有考虑-你已经向我们展示了对象是相同的-你应用程序中的某些逻辑正在更改你的对象,或者你的视图逻辑没有正确使用你的对象。还有一些事情你没有考虑-你已经向我们展示了对象是相同的-你应用程序中的某些逻辑正在更改对象或视图逻辑未正确使用对象。