我不明白这个 JavaScript (JSX) 语法中的 &&

IT技术 javascript reactjs jsx
2021-05-08 02:12:26

我的理解是这&&是一个“和”运算符。&&代码块中的以下内容如何返回布尔值?

{accounts.length > 0 && (
        <View>
          {accounts.map((account) => (
            <AccountListItem
              key={account.mask}
              account={account}
              selectedAccount={selectedAccount}
              setSelectedAccount={setSelectedAccount}
            />
          ))}
        </View>
  )}
4个回答

(如果这部分是真的)&&(这部分会执行)

条件渲染

expr1 && expr2 像这样工作

如果 expr1 可以转换为true,则返回 expr2;否则,返回 expr1。

expr1accounts.length > 0

  • 如果是false,则无法将其转换为true,因此整个表达式的计算结果为false
  • 否则,它是true,所以整个表达式的计算结果是expr2,在我们的例子中它是一个View组件。

在 React 中,false什么都不渲染。您可以使用以下最小示例验证这一点:

const Test = () => <>before{false}after</>

ReactDOM.render(<Test />) // renders as "beforeafter"

换句话说,在我们的示例中,如果accounts.length是 0,则false返回,不渲染;否则,View返回a并渲染。

如果 left 返回 false,对于 && 表达式将不会评估右侧,因此这是执行以下操作的捷径:

{accounts.length > 0 ? (
    <View>
      {accounts.map((account) => (
        <AccountListItem
          key={account.mask}
          account={account}
          selectedAccount={selectedAccount}
          setSelectedAccount={setSelectedAccount}
        />
      ))}
    </View>
):""}

逻辑运算符是短路的,因此如果 and 语句表达式的左侧为假,则不会评估右侧。这是一种做 if 的方法。