javascript - 在三元运算符中使用多个条件来停止在特定路由上渲染组件
问题描述
我有一个组件侧菜单。我想在所有页面上都有它,除了 singIn 和 singUp 页面。我选择这样做的方式是使用“useLocation”并在渲染组件之前检查 location.pathname。它看起来像这样:
let location = useLocation().pathname;
return (
location !== '/signin' && '/signup' ? (
<div>sidemenu</div>
) : (
<>
</>
)
但它仅适用于第一个语句。是否可以传递多个语句?或者可能有另一种方法不在两个/三个特定页面上呈现组件?
解决方案
任何布尔表达式在三元组中都是有效的。
但是,location !== '/signin' && '/signup'
解析如下:
(location !== '/signin') && ('/signup')
所以你应该写:
`location !== '/signin' && location !== '/signup'
此外,而不是语法
(expression) ? (
<div>sidemenu</div>
) : (
<>
</>
)
如果您不希望在false
案例中呈现任何内容,则可以使用:
return (expression) && (<div>sidemenu</div>)
如果表达式为假,它将返回false
并且不呈现任何内容,或者如果表达式为真,它将呈现您的 div。
此外,检查路径名列表的一个很好的语法是使用includes
,如下所示:
['/signin', '/signup'].includes(useLocation().pathname)
如果您决定要添加另一条路径,那么您将拥有一个易于扩展的单线
推荐阅读
- r - 将具有 X1、Y1、X2、Y2 的数据框重塑为 R 中的 X、Y1、Y2
- java - 如何禁用 openJdk 11 java.net.http.HttpClient 日志记录?
- gitlab-ci - gitlab CI不同的SSL密钥用于不同的服务器部署,如何?
- python - 字符串的具体拆分
- python - 在 python 2.7 中列出谷歌云存储中的文件
- r - 黑客在循环内重启 Rstudio 会话......来自 Rstudio
- latex - R Markdown 和希腊字母中的乳胶
- javascript - 如何在 expo 应用程序中处理共享意图(发送图像)?
- wordpress - How to get post thumbnail and title into two containers through WP_Query?
- node.js - 错误:配置对象无效。Webpack 已使用与 API 模式不匹配的配置对象进行初始化