reactjs - 在 React 中有条件地添加 HTML 属性
问题描述
aria-current
如果我的路径变量为空,我正在尝试在 React 中添加一个条件。
{props.path.map( (values, index) => {
const path = values.path ? `/${values.path}` : null;
const aria = path !== null ? `aria-current="page"` : null;
return (
<li
className="breadcrumb-item"
{...aria}
>
{path ? <a href={path}>{values.name}</a> : values.name}
</li>
);
})}
它不工作。知道我该怎么做吗?
谢谢
解决方案
问题
字符串可以传播,因为它们是可迭代的,但 null 不是。但是,在这里传播字符串没有意义,您想在道具中传播。
解决方案
创建一个可以散布到元素中的道具对象。
{props.path.map((values, index) => {
const path = values.path ? `/${values.path}` : null;
const aria = path !== null ? { "aria-current": "page" } : {};
return (
<li className="breadcrumb-item" {...aria}>
{path ? <a href={path}>{values.name}</a> : values.name}
</li>
);
})}
为什么 key is"aria-current"
和not ariaCurrent
?
请注意,JSX 完全支持所有 aria-* HTML 属性。尽管 React 中的大多数 DOM 属性和属性都是驼峰式大小写的,但这些属性应该是连字符大小写的(也称为 kebab-case、lisp-case 等),因为它们在纯 HTML 中:
<input type="text" aria-label={labelText} aria-required="true" onChange={onchangeHandler} value={inputValue} name="name" />
推荐阅读
- ruby-on-rails - 仅获取具有特定角色的用户 - Rolify
- javascript - 如何用js打印json的所有元素
- jenkins - 具有动态参数的 Jenkins 流水线
- bash - 如何找到本地服务器的简单IP地址
- arrays - 您如何在 Google 表格中的多个命名数字范围之间找到一个值
- wordpress - 如何使用 WordPress 在任意 URL 上使图像可用
- javascript - JS 搜索框提交未发送值 - 返回未定义或 [Object,Object]
- asp.net - 网络服务托管
- python - ValueError:在数据框中创建多个列时,要解压的值太多(预期为 4)
- firebase - 在 Firebase Functions 流程链中捕获更高层抛出的错误