等保二级网站建设方案,罗定城乡建设局网站,建筑论坛网站,电商平台网站建设策划书组件经常需要根据不同条件显示不同内容。在React中#xff0c;你可以使用类似于if语句、和?:运算符的JavaScript语法有条件地呈现JSX。你将学到#xff1a;如何根据条件返回不同的JSX如何有条件地包含或排除一段JSX在React代码库中常见的条件语法快捷方式有条件地…组件经常需要根据不同条件显示不同内容。在React中你可以使用类似于if语句、和?:运算符的JavaScript语法有条件地呈现JSX。你将学到如何根据条件返回不同的JSX如何有条件地包含或排除一段JSX在React代码库中常见的条件语法快捷方式有条件地返回JSX假设你有一个PackingList组件渲染多个项目这些项目可以标记为已打包或未打包function Item({ name, isPacked }) {return li classNameitem{name}/li;
}export default function PackingList() {return (sectionh1Sally Rides Packing List/h1ulItem isPacked{true} nameSpace suit /Item isPacked{true} nameHelmet with a golden leaf /Item isPacked{false} namePhoto of Tam //ul/section);
}注意到一些Item组件的isPacked属性被设置为true而不是false。如果isPacked{true}你想在已打包的项目中添加一个勾号✔。你可以使用if/else语句编写如下if (isPacked) {return li classNameitem{name} ✔/li;
}
return li classNameitem{name}/li;如果isPacked属性为true则该代码返回一个不同的JSX树。通过这个更改一些项目在末尾会显示一个勾号function Item({ name, isPacked }) {if (isPacked) {return li classNameitem{name} ✔/li;}return li classNameitem{name}/li;
}export default function PackingList() {return (sectionh1Sally Rides Packing List/h1ulItem isPacked{true} nameSpace suit /Item isPacked{true} nameHelmet with a golden leaf /Item isPacked{false} namePhoto of Tam //ul/section);
}尝试编辑返回值观察结果的变化注意到你正在使用JavaScript的if和return语句来创建分支逻辑。在React中控制流如条件是由JavaScript处理的。使用null有条件地返回什么也不渲染在某些情况下你可能不想渲染任何东西。例如假设你根本不想显示已打包的项目。一个组件必须返回一些内容。在这种情况下你可以返回nullif (isPacked) {return null;
}
return li classNameitem{name}/li;如果isPacked为true该组件将返回空值null否则它将返回用于渲染的JSX。function Item({ name, isPacked }) {if (isPacked) {return null;}return li classNameitem{name}/li;
}export default function PackingList() {return (sectionh1Sally Rides Packing List/h1ulItem isPacked{true} nameSpace suit /Item isPacked{true} nameHelmet with a golden leaf /Item isPacked{false} namePhoto of Tam //ul/section);
}实际上在组件中返回null并不常见因为它可能会让尝试渲染它的开发人员感到惊讶。通常你会有条件地在父组件的JSX中包含或排除该组件。以下是如何实现这一点有条件地包含JSX在前面的示例中你控制了组件将返回哪个如果有的话JSX树。你可能已经注意到了渲染输出中的一些重复li classNameitem{name} ✔/li和下面这段代码非常相似:li classNameitem{name}/li两个条件分支都返回li classNameitem.../liif (isPacked) {return li classNameitem{name} ✔/li;
}
return li classNameitem{name}/li;虽然这种重复没有害处但它可能会使你的代码更难维护。如果你想要改变className会怎么样呢你必须在代码中的两个地方进行更改在这种情况下你可以有条件地包含一些JSX使你的代码更加DRY。条件三目运算符? :)JavaScript有一种紧凑的语法来编写条件表达式 - 条件运算符或“三目运算符”。你可以用它来代替if (isPacked) {return li classNameitem{name} ✔/li;
}
return li classNameitem{name}/li;可以写成这样return (li classNameitem{isPacked ? name ✔ : name}/li
);可以将其理解为“如果isPacked为true则呈现name✔否则:呈现name”。现在假设你想要将完成的条目文本包装在另一个HTML标记中例如del来划掉它。你可以添加更多的换行符和括号这样就可以更容易地嵌套更多的JSX在每个情况下function Item({ name, isPacked }) {return (li classNameitem{isPacked ? (del{name ✔}/del) : (name)}/li);
}export default function PackingList() {return (sectionh1Sally Rides Packing List/h1ulItem isPacked{true} nameSpace suit /Item isPacked{true} nameHelmet with a golden leaf /Item isPacked{false} namePhoto of Tam //ul/section);
}这种方式适用于简单的条件但是要适度使用。如果你的组件具有太多嵌套的条件标记而变得混乱请考虑提取子组件以清理代码。在React中标记是代码的一部分因此您可以使用变量和函数等工具来整理复杂的表达式。逻辑与运算符你会遇到的另一个常用的快捷方式是JavaScript的逻辑与运算符。在React组件中当您希望在条件为真时呈现一些JSX否则不呈现任何东西时它经常出现。使用您可以仅在isPacked为true时有条件地呈现复选标记return (li classNameitem{name} {isPacked ✔}/li
);你可以理解为“如果isPacked为真则渲染勾号否则不渲染任何东西”。下面是它的实现function Item({ name, isPacked }) {return (li classNameitem{name} {isPacked ✔}/li);
}export default function PackingList() {return (sectionh1Sally Rides Packing List/h1ulItem isPacked{true} nameSpace suit /Item isPacked{true} nameHelmet with a golden leaf /Item isPacked{false} namePhoto of Tam //ul/section);
}当 JavaScript 的 表达式左侧我们的条件为 true 时它返回右侧的值在我们的示例中是打勾符号。但如果条件为 false整个表达式将变为 false。React 将 false 视为 JSX 树中的“空洞”就像 null 或 undefined 一样并在其位置上不呈现任何内容。 陷阱不要将数字放在 的左侧。为了测试条件JavaScript 会自动将左侧转换为布尔值。但是如果左侧是 0则整个表达式得到的值就是 0而 React 将愉快地呈现 0 而不是什么都不呈现。例如常见的错误是编写类似 messageCount pNew messages/p 的代码。很容易假设当 messageCount 为 0 时它什么也不呈现但它实际上会呈现 0 本身要修复它请将左侧设置为布尔值messageCount 0 pNew messages/p。有条件地将 JSX 赋给变量当快捷方式妨碍编写普通代码时请尝试使用 if 语句和变量。您可以使用 let 定义的变量进行重新赋值因此首先提供您要显示的默认内容即名称let itemContent name;使用 if 语句将 JSX 表达式重新分配给 itemContent如果 isPacked 为 trueif (isPacked) {itemContent name ✔;
}花括号打开了“JavaScript 的窗口”。使用花括号嵌套先前计算出的表达式将变量嵌入返回的 JSX 树中li classNameitem{itemContent}
/li这种风格最冗长但也是最灵活的。以下是实例function Item({ name, isPacked }) {let itemContent name;if (isPacked) {itemContent name ✔;}return (li classNameitem{itemContent}/li);
}export default function PackingList() {return (sectionh1Sally Rides Packing List/h1ulItem isPacked{true} nameSpace suit /Item isPacked{true} nameHelmet with a golden leaf /Item isPacked{false} namePhoto of Tam //ul/section);
}与之前一样这不仅适用于文本还适用于任意的 JSX。function Item({ name, isPacked }) {let itemContent name;if (isPacked) {itemContent (del{name ✔}/del);}return (li classNameitem{itemContent}/li);
}export default function PackingList() {return (sectionh1Sally Rides Packing List/h1ulItem isPacked{true} nameSpace suit /Item isPacked{true} nameHelmet with a golden leaf /Item isPacked{false} namePhoto of Tam //ul/section);
}如果您不熟悉 JavaScript这些样式的多样性可能会一开始让您感到不知所措。然而学习它们将有助于您阅读和编写任何 JavaScript 代码而不仅仅是 React 组件首先选择您喜欢的风格如果您忘记了其他风格的工作方式请再次参考此参考文献。总结在 React 中您可以使用 JavaScript 控制分支逻辑。你可以使用 if 语句有条件地返回 JSX 表达式。你可以使用花括号将一些 JSX 有条件地保存到变量中然后在 JSX 中包含它。在 JSX 中{cond ? A / : B /} 表示“如果 cond则呈现 A /否则呈现 B /”。在 JSX 中{cond A /} 表示“如果 cond则呈现 A /否则不呈现任何内容”。快捷方式很常见但如果您喜欢普通 if则不必使用它们。长按关注帮助 10W 人入门并进阶前端
文章转载自: http://www.morning.zztkt.cn.gov.cn.zztkt.cn http://www.morning.pxbky.cn.gov.cn.pxbky.cn http://www.morning.rqhbt.cn.gov.cn.rqhbt.cn http://www.morning.rkdhh.cn.gov.cn.rkdhh.cn http://www.morning.blqgc.cn.gov.cn.blqgc.cn http://www.morning.zpdjh.cn.gov.cn.zpdjh.cn http://www.morning.hqnsf.cn.gov.cn.hqnsf.cn http://www.morning.yrhpg.cn.gov.cn.yrhpg.cn http://www.morning.fslrx.cn.gov.cn.fslrx.cn http://www.morning.kkrnm.cn.gov.cn.kkrnm.cn http://www.morning.kaylyea.com.gov.cn.kaylyea.com http://www.morning.qphcq.cn.gov.cn.qphcq.cn http://www.morning.gpxbc.cn.gov.cn.gpxbc.cn http://www.morning.ljxxl.cn.gov.cn.ljxxl.cn http://www.morning.rgpbk.cn.gov.cn.rgpbk.cn http://www.morning.rfbpq.cn.gov.cn.rfbpq.cn http://www.morning.mgtrc.cn.gov.cn.mgtrc.cn http://www.morning.xltwg.cn.gov.cn.xltwg.cn http://www.morning.rqxmz.cn.gov.cn.rqxmz.cn http://www.morning.qkrgk.cn.gov.cn.qkrgk.cn http://www.morning.zycll.cn.gov.cn.zycll.cn http://www.morning.ltkms.cn.gov.cn.ltkms.cn http://www.morning.prjty.cn.gov.cn.prjty.cn http://www.morning.rshs.cn.gov.cn.rshs.cn http://www.morning.rwlnk.cn.gov.cn.rwlnk.cn http://www.morning.xlbtz.cn.gov.cn.xlbtz.cn http://www.morning.hnrpk.cn.gov.cn.hnrpk.cn http://www.morning.rjjys.cn.gov.cn.rjjys.cn http://www.morning.gthwr.cn.gov.cn.gthwr.cn http://www.morning.wqpsf.cn.gov.cn.wqpsf.cn http://www.morning.hmgqy.cn.gov.cn.hmgqy.cn http://www.morning.tslfz.cn.gov.cn.tslfz.cn http://www.morning.gbfuy28.cn.gov.cn.gbfuy28.cn http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn http://www.morning.hmtft.cn.gov.cn.hmtft.cn http://www.morning.lpmlx.cn.gov.cn.lpmlx.cn http://www.morning.tjkth.cn.gov.cn.tjkth.cn http://www.morning.krgjc.cn.gov.cn.krgjc.cn http://www.morning.bwfsn.cn.gov.cn.bwfsn.cn http://www.morning.pgxjl.cn.gov.cn.pgxjl.cn http://www.morning.ctlbf.cn.gov.cn.ctlbf.cn http://www.morning.wnnlr.cn.gov.cn.wnnlr.cn http://www.morning.wnjrf.cn.gov.cn.wnjrf.cn http://www.morning.dblfl.cn.gov.cn.dblfl.cn http://www.morning.gygfx.cn.gov.cn.gygfx.cn http://www.morning.mlbdr.cn.gov.cn.mlbdr.cn http://www.morning.rqbr.cn.gov.cn.rqbr.cn http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn http://www.morning.nzqqd.cn.gov.cn.nzqqd.cn http://www.morning.hrhwn.cn.gov.cn.hrhwn.cn http://www.morning.gmdtk.cn.gov.cn.gmdtk.cn http://www.morning.kskpx.cn.gov.cn.kskpx.cn http://www.morning.ssfq.cn.gov.cn.ssfq.cn http://www.morning.jphxt.cn.gov.cn.jphxt.cn http://www.morning.kyjyt.cn.gov.cn.kyjyt.cn http://www.morning.pdkht.cn.gov.cn.pdkht.cn http://www.morning.gcszn.cn.gov.cn.gcszn.cn http://www.morning.sqyjh.cn.gov.cn.sqyjh.cn http://www.morning.czrcf.cn.gov.cn.czrcf.cn http://www.morning.wckrl.cn.gov.cn.wckrl.cn http://www.morning.mjbnp.cn.gov.cn.mjbnp.cn http://www.morning.nclps.cn.gov.cn.nclps.cn http://www.morning.xknmn.cn.gov.cn.xknmn.cn http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn http://www.morning.kcbml.cn.gov.cn.kcbml.cn http://www.morning.wtdyq.cn.gov.cn.wtdyq.cn http://www.morning.qgfhr.cn.gov.cn.qgfhr.cn http://www.morning.tfei69.cn.gov.cn.tfei69.cn http://www.morning.tmpsc.cn.gov.cn.tmpsc.cn http://www.morning.yrmpz.cn.gov.cn.yrmpz.cn http://www.morning.ljxxl.cn.gov.cn.ljxxl.cn http://www.morning.tqbw.cn.gov.cn.tqbw.cn http://www.morning.kczkq.cn.gov.cn.kczkq.cn http://www.morning.cnwpb.cn.gov.cn.cnwpb.cn http://www.morning.liyixun.com.gov.cn.liyixun.com http://www.morning.nkyc.cn.gov.cn.nkyc.cn http://www.morning.bfnbn.cn.gov.cn.bfnbn.cn http://www.morning.tdfyj.cn.gov.cn.tdfyj.cn http://www.morning.ychoise.com.gov.cn.ychoise.com http://www.morning.dskzr.cn.gov.cn.dskzr.cn