条件渲染在React开发中非常重要的功能,它允许开发人员根据条件控制渲染的内容,在创建动态和交互式用户界面方面发挥着至关重要的作用,本文总结了常用的的条件渲染方法。
if-else是一种控制流程的简单方法,在控制渲染中能发挥很好的作用。
三元运算符是条件如果为真则返回一个值,如果为假则返回另一个值,
在react中使用的非常广泛,在条件比较简单和内容较少的情况下非常实用,并且语法简洁。
在只关注一种条件结果的情况下,使用逻辑与比三元运算符更简洁。
当空合并运算符 ( ??
) 前面的值为null或undefined, 会返回问号右边的表达式。
在组件内,我们使用空合并运算符 (??) 来处理可能age
是null
或undefined
的情况。如果user.age
缺少,该userAge
变量默认为“未知”,然后在渲染的输出中使用。这确保了即使年龄数据不存在,组件也可以优雅地处理这种数据缺失。
switch/case非常适合在 React 中不同条件导致导致不同渲染,确保代码的可维护且可读性。
该方案可以作为Switch Case的替代者,
甚至可以使用true和false来做key来处理一些特定场景,在下面的场景中isWorkDay,isSunday,isFestival都可能是true,所以这里产生了优先级,可以利用这里的优先级来做一些条件渲染。
掌握基本常用方法后,还会遇到需要更复杂解决方案的场景。
ErrorBoundry可以捕获其子组件树中的 JavaScript 错误、记录这些错误,并显示兜底UI 而不是崩溃的组件树的组件。
在这里需要捕获到错误的时候依据条件渲染用户自定义的兜底UI。
HOC 是包装组件的函数,可以根据收到的 props 有条件地渲染组件,从而提供更灵活的方式来跨组件共享逻辑。
想象一下,有一个功能只有拥有高级帐户的用户才能看到。我们将创建一个 HOC 来检查用户的帐户类型并有条件地相应地呈现组件。
高阶组件withPremiumFeature
中根据参数判断展示内容
render props是将函数作为props传递给组件,该函数中可以根据条件判断决定UI展示。
在这个例子中,该UserOnlineStatus
组件负责确定用户的在线状态,但不直接渲染UI。相反,它将渲染委托给一个 prop(render prop
),这是一个由父组件传递的函数。函数 ( renderStatus
) 获取isOnline
状态并根据此信息决定渲染内容。
针对特定用例的高级技术:
1. 过度使用三元运算符:
if
语句或创建新的渲染函数。2.滥用逻辑 &&
**造成短路:**
{count && <Component />}
则将无法渲染,因为 0 在 JavaScript 中是一个假值。3. 滥用空值合并运算符??
:不要将它与逻辑||
运算符混淆。value ?? alternative
如果“value”为空或未定义,则表达式仅显示“alternative”,而value || alternative
对于每个假值(例如,''、0、false)则显示“alternative”。
Copyright© 2013-2019