How to assign dict value - "TypeError: Cannot read properties of undefined (reading '0')"

How to assign dict value - "TypeError: Cannot read properties of undefined (reading '0')"

令牌中的用户数据采用以下格式:

name:"TestUser1"
preferrred_username:"Test1"
ver:"2.0"
role: "modify"

对于某些用户,令牌不会 return 'role' - 如下所示(我想为这些用户分配角色作为“通过代码读取”):

name:"TestUser2"
preferrred_username:"Test2"
ver:"2.0"

当我在我的组件中使用以下代码时,我能够为第一个用户获取 'role' 值作为“修改”。

let userRole = this.props.user.account.idTokenClaims.role
disabled={(userRole == "modify") ? false : true} //I disable fields based on user role.

对于第二个用户,它抛出错误“TypeError:无法读取未定义的属性(读取'0')”。 我理解这是 return 错误,因为第二个用户没有角色。我该如何处理该错误。

如果角色 return 是空字符串,我可以检查并将 userRole 分配为“read”。

if (this.props.user.account.idTokenClaims.role == "")
{
    let userRole == "read"
}

但令牌不会 return 'role' 声称自己。有关如何处理此问题并将 userRole 分配为“已读”的任何建议。谢谢

const userRole = this.props.user.account.idTokenClaims?.role || ‘read’

这一定能解决问题。现在,当您从令牌中获取一个用户角色时,它就会有一个值。如果它没有出现,它将默认返回“读取”

如果你的角色是一个列表,你可以试试这个

const data = {role: ['read', 'bla','bla','bla']} 
const result = data?.role.find(item => item.toLowerCase() === 'modify') || 'read'
console.log(result)