我正在制作一个简单的react应用程序,其中有两个不同的div's
..
一种带有选择输入和选择列表的,
<div id="container">
<div className="_2iA8p44d0WZ">
<span className="chip _7ahQImy">Item One</span>
<span className="chip _7ahQImy">Item Two</span>
<span className="chip _7ahQImy">Item Three</span>
<span className="chip _7ahQImy">Item Four</span>
<span className="chip _7ahQImy">Item Five</span>
<input
type="text"
className="searchBox"
id="search_input"
placeholder="Select"
autoComplete="off"
value=""
/>
</div>
</div>
另一个将列出所选选项为fieldset
,
<div>
{selectedElements.map((item, i) => (
<div key={i} className="selected-element" ref={scrollDiv}>
<fieldset>
<legend>{item}</legend>
</fieldset>
</div>
))}
</div>
基于此解决方案,我已添加createRef
到所选元素中,例如,
<div key={i} className="selected-element" ref={scrollDiv}>
</div>
然后我使用 Javascript 查询方法来获取 DOM 元素,例如,
const chipsArray = document.querySelectorAll("#container > div > .chip");
向所有元素添加了单击事件侦听器,例如,
chipsArray.forEach((elem, index) => {
elem.addEventListener("click", scrollSmoothHandler);
});
然后scrollSmoothHandler
喜欢,
const scrollDiv = createRef();
const scrollSmoothHandler = () => {
console.log(scrollDiv.current);
if (scrollDiv.current) {
scrollDiv.current.scrollIntoView({ behavior: "smooth" });
}
};
但这并不像预期的那样工作。
要求:
单击 中的任何项目first div
,然后其相关字段集需要进入smooth scrolled
另一个 div..
例如:
如果用户单击该元素的Item Four
下
<div id="container"> ... <span className="chip _7ahQImy">Item Four</span> ... </div>
然后需要滚动到相关的字段集。这里带有图例的字段集为Item Four
..
我认为也在react上制作 js dom 查询方法,这似乎不是react的实现方式。任何人都可以请帮助我实现在单击所选项目时滚动到相关字段集的结果..