【发布时间】:2020-05-29 03:50:53
【问题描述】:
我们可以通过在其 UL 父级上使用 React Refs 来获取所有 li 值吗?像前锋裁判或儿童之类的???
我希望使用 React Ref 执行以下操作。
let listItem = getElementsByTagName('li');
let anchor;
let listAnchorVal;
for(let i = 0; i < listItem.length; i++){
anchor = listItem[i].getElementsByTagName("a")[0];
listAnchorVal= anchor.textContent || anchor.innerText;
}
下面是我的 React 代码
const listItems = React.createRef();
const handleKeyUp = () => {
console.log(listItems.current.value) :(
};
return (
<div>
<input type="text" className="list-filter-input" onKeyUp={handleKeyUp} placeholder="Search names...." />
<span style={{position:"absolute", right:"925px", marginTop:"1.5%"}}><i className="fa fa-fw fa-search"></i></span>
<ul className="list-filter-ul" ref={listItems}>
<li><a href="#">Deepak</a></li>
<li><a href="#">Mytidbit</a></li>
<li><a href="#">Hello</a></li>
<li><a href="#">World</a></li>
<li><a href="#">Chris</a></li>
<li><a href="#">Bestie</a></li>
<li><a href="#">Sugar</a></li>
</ul>
</div>
这是我正在尝试实现的列表过滤器。
onKeyUp 输入时,我希望执行以下操作。您认为使用状态具有 li 值来实现此过滤器是不可避免的吗?我正在考虑使用状态以外的其他可能性。
onKeyUp(e){
listItemValues.filter(val=>{
return val.toLowerCase().includes(e.target.value.toLowerCase()))
}
}
【问题讨论】:
-
您能解释一下您要实现的目标吗?使用 React,DOM 是您通常存储在纯 JavaScript 对象中的数据表示。意思是,您很少需要使用您正在执行的功能检查 DOM;该数据已经在您的代码中的其他地方可用。
-
您能否详细说明您想要实现的目标。可能会帮助您获得更好的解决方案。
-
@RossAllen Mohit Mutha ...更新了我的问题。
-
啊哈,我明白了。好吧,让我写一个答案...