javascript - 使用 React Hooks 引用 DOM 元素
问题描述
我正在创建对 DOM 元素的引用,以便将 React Hooks 用于功能组件,如下所示:
let link1, link2 = useRef();
<ul>
<li>
<a ref={element => { link1 = element;}}>FAQ</a>
</li>
<li>
<a ref={element => { link2 = element;}}>Contact Us</a>
</li>
</ul>
问题是,我是否必须像上面那样为我想要定位的每个 DOM 元素创建引用?我觉得代码会快速增长。
这是完整代码的codepen。
解决方案
您也可以为所有相关元素的父元素创建一个 ref,然后从那里爬取节点。
如果您将架构更改为:
const ulRef = useRef(null);
<ul ref={ulRef}>
<li>
<a className="link">FAQ</a>
</li>
<li>
<a className="link">Contact Us</a>
</li>
</ul>
您可以像这样抓取节点:
ulRef.current.children().children('a')
哪个应该返回所有链接的 nodeList 。
^这是使用多年前仍留在我脑海中的 jQuery 语法......
您可以使用此命令创建 li 节点的 HTMLCollection: ulRef.current.children
,然后遍历它们以获得所需的值。
我在代码沙箱上创建了一个简化示例。
推荐阅读
- python - 我可以获取 Word2Vec 和 Doc2Vec 矩阵来计算余弦相似度吗?
- c++ - CComboBox - 如何使用下拉列表样式更改静态的颜色
- java - 生成无随机类的 4 位数字
- php - 从站点上的 php exec 运行 php shell
- python - 向文本文件中相同的行添加标识符
- google-chrome - 谷歌浏览器扩展来处理某些链接
- django - 如果填充了另一个模型,则 Django Singal 填充一个模型
- nuxt.js - 异步请求后调用“nuxt-link”行为
- arrays - 快速将新列附加到数组
- java - 在 IntelliJ 中打开 AOSP - 问题