Javascript 如何访问处于ReactJS状态的嵌套JSON对象?

Javascript 如何访问处于ReactJS状态的嵌套JSON对象?,javascript,reactjs,Javascript,Reactjs,我已声明: { studentId: 1, studentName: "Student", religion: { religionId: 1, religionName: "RELIGION" } } 如何在react中访问宗教名称 我已尝试通过以下方式访问我的学生状态: const {studentState} = useContext(StudentContext); return ( <div> {studentState.stude

我已声明:

{
  studentId: 1,
  studentName: "Student",
  religion: {
    religionId: 1,
    religionName: "RELIGION"
  }
}
如何在react中访问宗教名称

我已尝试通过以下方式访问我的学生状态:

const {studentState} = useContext(StudentContext);

return (
 <div>
  {studentState.studentId}
  {studentState.studentName}
  {studentState.religion.religionName}
 </div>
);
const StudentContext = React.createContext(null);


// Later, define a value 
const studentState = {
  studentId: 1,
  studentName: "Student",
  religion: {
    religionId: 1,
    religionName: "RELIGION"
  }
};


// Then in a component, render the context provider:
<StudentContext.Provider value={studentState}>
  ...
</StudentContext.Provider>
const{studentState}=useContext(StudentContext);
返回(
{studentState.studentId}
{studentState.studentName}
{学生国家、宗教、宗教名称}
);

使用
{studentState.religion.religionName}

时未定义的结果必须使用条件来处理此情况。。 试试这个
{studentState.ligion&&studentState.ligion.religionName}

尽管没有一个最小的可重复的例子很难判断,但有一件事很突出,那就是在
{studentState}
周围使用了大括号

如果您提供的示例中的对象是整个上下文值,则不应使用大括号,因为这将尝试从上下文对象中提取一个名为
studentState
的属性,该属性在您的示例中不存在。相反,您只需要整个上下文值:

const studentState = useContext(StudentContext);
这假设您以前在某个地方创建了
StudentContext
对象,并提供了一个值,如下所示:

const {studentState} = useContext(StudentContext);

return (
 <div>
  {studentState.studentId}
  {studentState.studentName}
  {studentState.religion.religionName}
 </div>
);
const StudentContext = React.createContext(null);


// Later, define a value 
const studentState = {
  studentId: 1,
  studentName: "Student",
  religion: {
    religionId: 1,
    religionName: "RELIGION"
  }
};


// Then in a component, render the context provider:
<StudentContext.Provider value={studentState}>
  ...
</StudentContext.Provider>
const StudentContext=React.createContext(null);
//稍后,定义一个值
常量studentState={
学生ID:1,
学生姓名:“学生”,
宗教:{
宗教:1,
宗教名称:“宗教”
}
};
//然后在组件中,呈现上下文提供程序:
...

阅读JavaScript中的对象分解(这是一个很好的介绍)。这就是您正在使用的大括号所做的。

请包含一个。键名
studentState
定义在哪里?你所在的州没有任何这样的对象属性对不起,你说的“密钥名”是什么意思?@agung_-phe你可能想重温一下解构的工作原理和对象属性的速记<代码>常量{studentState}=useContext(StudentContext)表示创建一个名为
studentState
的变量,并将其赋值给
useContext(StudentContext)。studentState
。但是您的state没有一个名为
studentState
的属性,因此它没有太多意义。很抱歉,我没有编写完整的可复制示例代码,但是您编写的上下文与我的上下文相同,我从web API获取数据,该API生成JSON格式,如上面的const studentState