如何在反应js中使用条件运算符[重复]

Posted

技术标签:

【中文标题】如何在反应js中使用条件运算符[重复]【英文标题】:How to use conditional operator in react js [duplicate] 【发布时间】:2020-01-07 14:59:52 【问题描述】:

在很多地方,我设置的都是由 etc 修改、创建的:

const test = this.state.isValueEdited
? 
  modifiedById: getLoggedInUser().userId,

: 
 // TODO
;

我如何检查getLoggedInUser 是否有一些价值,而不是访问.userId.. 否则让我们设置null

谢谢

干杯

【问题讨论】:

【参考方案1】:

也使用ternary operator

 modifiedById: getLoggedInUser() ? getLoggedInUser().userId : null

为了避免执行两次

const evaluation = getLoggedInUser()

modifiedById: evaluation ? evaluation.userId : null

【讨论】:

这将调用getLoggedInUser() 两次。那是低效的,可能会导致不必要的 sife 效应。【参考方案2】:

你可以使用逻辑或||

modifiedById: ( getLoggedInUser() ||  userId: null  ).userId

当 getLoggedInUser 返回的值返回假值时,userId : null 将作为默认值

这期望从 getLoggedUser 返回的值是假值,以防它不满足条件

【讨论】:

您能解释一下这一行吗getLoggedInUser() || userId: null 这意味着即使 userId 为 null 也尝试访问它?还是? 整洁!不是这种语法的最大粉丝,但它确实可以完成工作 @Roxy'Pro 当从getLoggedInUser 返回的值是假的时,只有userId: null 会出现,逻辑或从左边开始计算表达式,一旦找到真值就停止,如果没有的值为 true 它返回表达式的最后一个值,所以这里在 getLoggedInUser 返回虚假值,而不是仅使用 userId: null 否则将使用从函数返回的值 否决选民关心评论:/【参考方案3】:

您可以先检索用户,然后您可以使用&& 运算符获取userId,前提是user 返回truthy。 falsenullundefined""、0、NaN 是假值

const user = getLoggedInUser() || null;

const test = this.state.isValueEdited ? (
  modifiedById: user && user.userId,
) : ...

如果getLoggedInUser在用户未登录时已经返回null,则可以省略|| null

【讨论】:

以上是关于如何在反应js中使用条件运算符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 v-text 中使用条件运算符作为 Vue.Js 组件?

没有 else 子句的单行 If 条件 [重复]

使用模板字符串和 && 运算符反应条件类名

如果条件在c ++和python中执行运算符[重复]

如何解决“无法无条件调用运算符‘0’,因为接收者可以为‘null’”[重复]

在vb.net中使用c#条件运算符[重复]