React 开发不推荐使用 &&

908 阅读1分钟

React 开发时,常常需要根据 props 和 state 有条件地渲染组件。虽然条件渲染有多种方式,但本文重点介绍 JavaScript &&运算符。 && 操作符经常会导致 UI bug,这很容易避免并且经常不被提及。

内容

  1. && 是怎么生效的
  2. 为什么不推荐使用 &&
  3. 推荐使用

&& 是怎么生效的

在 React 中使用的一个经典例子:

function MyComponent({ **condition** }) {  
    return (  
        <div>  
            <h1>Title</h1>  
            condition && <ConditionalComponent /> 
        </div>  
    );  
}
  • 如果condition是真值,则呈现
  • 如果condition是假值,则不呈现

这是 JavaScript 短路验证特性(short-circuit evaluation),当第一个操作数为 false ,终止 && 运算并且不计算第二个操作数。

为什么不推荐使用 &&

大部分情况下,&& 都会生效。但是,当第一个操作数不是 boolean 类型时,就会出现问题。

例如:

  • 如果condition为 0,则在 UI 中显示 0

  • 如果condition未定义,将会抛出错误:“未捕获的错误:错误(...):没有从渲染返回。这通常意味着缺少返回语句。或者,不渲染,返回 null。”

推荐使用

为避免在 UI 中显示不想要的内容,例如 0,建议 JavaScript 三元运算符。

例如:

condition ? <ConditionalComponent /> : null;

当然,也通过!!condition转成 Boolean 类型。但这种方式的代码可读性较差。

!!condition && <ConditionalComponent />;

总结

为了防止可避免的 UI 错误,建议使用 JavaScript 三元运算符替代逻辑 AND 运算符来条件渲染 React 组件。

🔴 BAD
condition && <ConditionalComponent />
🟢 GOOD
condition ? <ConditionalComponent /> : null

本文翻译自:Stop Using “&&” for Conditional Rendering in React