让我们看一下今天的React呈现条件的常见方法和预防措施!
从最基本的反应类型来看。如果有数据,则显示组件,并且没有数据显示不显示内容。清单渲染:
该表格的原因是我们将提前返回。如果满足条件(不存在值),则在组件中不显示任何内容。
如果要检查多个条件,您也可以使用语句。例如,在显示数据之前,请检查加载和错误状态:
在这里,我们可以多次使用语句,无需使用或语句,这会减少需要编写的代码,并更可读性。
当我们想提前退出或什么都没有显示时,如果语句有用。表达写条件。
在React中,我们必须在JSX中包含表达式,而不是语句。这就是为什么我们只能在JSX中使用三个-Yuan表达式,而不是IF语句编写条件的原因。
例如,在移动设备的屏幕上显示一个组件,另一个组件显示在较大的屏幕上,您可以使用三个元表达式实现:
实际上,您不必在JSX中包括这些三元表达式,您可以将结果分配给变量,然后在需要的地方使用它:
在许多情况下,我们可能想使用三个-yuan表达式,但是如果不满足条件,则不会显示任何内容。
您可以使用&&计算符号来简化:
如果条件是正确的,则将输出逻辑&&运算符后的表达式。如果条件为false,React将忽略并跳过表达式。
如果语句可能导致组件变得混乱,并且可以将多个条件提取到包含开关语句的单独组件中(选择组件逻辑的复杂性以提取单独的组件)。LET对简单的菜单开关组件:
因为条件逻辑上的menuitem组件菜单菜单组件不会混乱,所以可以轻松地看到给定菜单状态将显示哪个组件。案例计算,因为在React中,组件始终需要返回元素或null。
在JavaScript中,当对象用作钥匙值对时,它可以用作枚举:
如果要创建三个不同的组件foo,bar和默认值,并根据某个状态显示这些组件:
创建一个可用于枚举的对象:
呈现此枚举对象的功能:
可以从对象中检索上述属性。可以看出,与开关案例组件相比,它更可读。
JSX控制语句库扩展了JSX的功能,因此可以直接使用JSX来实现条件渲染。它是一个Babel插件,可在翻译过程中将相似组件的控制语句转换为相应的JavaScript。
安装和修改Babel配置后,您可以像这样重写应用程序:
当然,不建议以这种方式编写条件语句,这将导致代码的可读性更糟,JSX允许使用强大的JavaScript函数延迟条件渲染而无需添加模板组件来启用它。
高水平的组件(HOC)和React中的条件完全匹配。HOC可以帮助处理多种用例,但是用例可以使用条件渲染来更改组件的外观。let,请参见显示元素的事件或组件:
在此示例中,列表组件可以集中在列表上。无需加载状态。HOC隐藏了实际组件中的所有干扰。最后,可以添加多个高端组件以隐藏多个条件。
查看一个常见的渲染示例。渲染的内容仅在数组中有元素时:
预期的结果是,当元素有元素时呈现数组的内容,并且在没有元素时没有呈现。值(例如0)将立即返回。在JavaScript中,布尔计算算法不会将其结果转换为布尔值。因此,React将DOM中获得的值放置。与false不同,0是一个有效的反应节点,因此它最终将渲染0。
如何避免此问题?它可以明确转换为布尔值。当表达结果是结果时,它不会在页面上呈现:
或使用三元表达来实施:
与计算(&&)相比,它具有更高的优先级。因此,请小心使用所包括的JSX条件和操作员:
写这本书等同于:
这样,当操作员的左侧将在不继续后者代码的情况下直接返回。因此,在大多数情况下,当您看到或操作时,您可以使用括号来避免由于优先级问题而呈现错误:
三元表达适用于两个JSX之间的切换。一次以上的项目,代码将变得更糟:
有时最好使用&&实现它,但是有些条件会重复:
当然,在这种情况下,使用if语句可能是一个更好的选择:
道具传递的反应元素可以用作判断条件吗?查看一个简单的例子:
我们希望,当没有内容时,包裹会出现无效,但是React不能这样起作用:
因此,请勿使用JSX作为判断条件,以避免一些不可预测的问题。
用三元表达式写的JSX感觉就像是一个完全独立的代码:
更改时会发生什么?我的猜测是卸载然后安装的,因为这里写了两个单独的JSX标签。它看到的只是在同一位置处的元素,因此它可以保留安装的示例并更新props.props.上面的代码是等效的。
注意:如果三元表达式包含不同的组件,例如,当hasitem更改时,将重新安装REECT,因为Item1无法更新为Item2。
上述情况将导致一些意外的行为:
在这里,如果您在名称输入中输入一些内容,然后切换模式(模式),如果您在名称中输入内容,则将其泄漏到phone.dertuction的输入中。
这里的解决方案是使用键。通常,我们使用它来渲染列表,但实际上是一个React Election徽标提示符 - 具有相同键的元素是相同的逻辑元素:
另一种方法是用两个单独的&&块替换三元表达式。当键不存在时,react将返回到子阵列中的项目索引,因此将不同的元素放置在不同的位置以明确定义效果键:
参考:
https://blog.thoughtspile.tech/2022/01/17/jsx-comentyals/https://ordinarycoders.com/blog/react-react-renderingal- rendering-
原始:https://juejin.cn/post/7101883445160673288