javascript - 从 React 中的相同元素方法获取属性值
问题描述
假设我有一个这样的 React 组件渲染:
return (
<nav>
<a href='/link1'>LINK 1</a>
<a href='/link2'>LINK 2</a>
<a href='/link3'>LINK 3</a>
</nav>
)
是否可以从元素调用的方法中引用唯一的 href 属性,类似于此(伪代码不起作用):
...
const func1 = function(target){
if (target.href === '/link2') return 'bar'
return 'baz'
}
return (
<nav>
<a href='/link1' className={func1(this)}>LINK 1</a>
<a href='/link2' className={func1(this)}>LINK 2</a>
<a href='/link3' className={func1(this)}>LINK 3</a>
</nav>
)
...
理想情况下,上面的示例将在 DOM 中呈现如下内容:
<a href='/link1' class='baz'>LINK 1</a>
<a href='/link2' class='bar'>LINK 2</a>
<a href='/link3' class='baz'>LINK 3</a>
我想这样做以使其保持干燥-避免两次写入href值的需要(实际上这将比简单的'/link1'长得多。
我还在选择 React,所以如果答案是“不”,或者“你可以做到,但它不是一个好习惯”,我很想知道。非常感谢。
解决方案
您可以创建链接组件,并将 getter 函数传递给它
function Link(props) {
return <a href={props.href} className={props.getClassName(props.href)} />
}
或者,例如,您可以创建链接数组并渲染它们
const links = ['link1', 'link2', 'link3']
return (
<nav>
{links.map(link => <a href={link} className={getClassName(link)} />}
</nav>
)
推荐阅读
- c# - 源数组不够长。检查 srcIndex 和长度,以及数组的下限
- python-3.x - Arduino 和 Python (3.x) 之间的 Serial.read() 和 Struct.pack / 串行通信问题
- ansible - 如何仅在ansible中只发送文件路径?
- xml - 如何直接将 xml 字符串加载到数据集?而不是从 xml 文件加载?
- android - 如何在 HERE 地图 android 中获取持续时间
- javascript - Webhook 到来自 firebase 云功能的不和谐 url
- python - 使用多索引将数据帧从长格式重塑为宽格式
- python - 如何从 python 中的 base64 编码数据中了解文件的 MIME 类型?
- io - 在 Perl 6 中以独立于操作系统的方式删除目录树
- python - 如何使用 Python 为 Jenkins 构建添加描述