首页 > 解决方案 > 有没有办法在状态声明中包含条件?

问题描述

我正在为 React JSX 中的网站制作表单。根据用户的类型(访问级别),他们需要能够查看/存储表单中的不同字段。我正在从事的项目是我刚刚加入的项目(我是 React 的新手),不幸的是,它太长了,无法共享大量代码。我坚持的是:

我有一些值,我们称它们为 A 和 B。用户 1 不应该看到 A 或 B,而用户 2 需要同时看到它们。这些值是从下拉菜单中选择的,因此它们需要能够更改(即它们需要是“状态”值)。但是,如果我尝试将 A 和 B 添加到“状态”,当我是用户 1 并访问该网站时,我会收到控制台错误,因为它正在尝试访问与我的帐户/表单无关的值。

我希望我可以做一些布尔函数,我们称之为 isUser2,如果我是用户 2,它返回 true,如果我不是,则返回 false。然后,我可以这样说:

this.state = {
  {(this.props.isUser2) &&
    A: // some default value,
    B: // some default value,
  }
  C: // some value that User 1 and User 2 both need to access,
};

但是,这种语法不起作用,我只是不太了解 React,无法理解这样的事情是否可能,以及为什么或为什么不。

正如我所说,该项目是广泛的,并且遵循以前作者决定的任何约定,这些约定仍然得到执行。为了实现这一点,我真正必须在这里玩的唯一事情是道具和状态。如果有人对这个问题有任何见解,我将非常感激。

标签: javascriptreactjsconditional-statements

解决方案


您可以有条件地将属性插入到对象文字中。

const obj = {
    ...condition && { property: value },
};

所以,你可以做

this.state = {
  ...this.props.isUser2 && { A: // some default value },
  ...this.props.isUser2 && { B: // some default value },   
  C: // some value that User 1 and User 2 both need to access,
};

推荐阅读