[英]How to render React.Component on mouse enter/leave events
Have a problem with rendering react component on onMouseEnter
, onMouseLeave
events in the list of items 在项目列表中的
onMouseEnter
, onMouseLeave
事件上渲染react组件时onMouseEnter
问题
I have a list of items 我有一个项目清单
const [isHover, setHover] = useState(false)
...
{data.categories.map((item) => (
<>
<li
key={item.id}
className="list-item"
onMouseEnter={() => {
setHover(true);
}}
onMouseLeave={() => {
setHover(false);
}}
>
<NavLink
to={`/catalogues/${item.name_parameterized}`}
className="list-item-link"
activeClassName="active"
>
{item.name}
</NavLink>
</li>
{isHover && <SubCategory data={item.children} />}
</>
))}
Need to show SubCategory Component with different data
on the onMouseLeave
/ onMouseEnter
events on the every li
需要在每个
li
上的onMouseLeave
/ onMouseEnter
事件上显示SubCategory Component with different data
的onMouseLeave
onMouseEnter
If i do something like this 如果我做这样的事情
<ul>
<li>
...
isHover && <SubCategory>
<li>
<ul>
I see that <SubCategory>
shown items.length
times but I need to show only one <SubCategory>
for hovering li
only 我看到
<SubCategory>
items.length
<SubCategory>
显示了items.length
次,但我只需显示一个 <SubCategory>
仅用于悬停li
Expected result is how on the Walmart site subcategories shown 预期结果是沃尔玛现场子类别的显示方式
In other words you need a different state for each element, therefore you also need a Component for each: 换句话说,每个元素都需要不同的状态 ,因此每个元素还需要一个Component:
function ShowOnHover({ item }) {
const [isHover, setHover] = useState(false);
return (
<>
<li
key={item.id}
onMouseEnter={() => setHover(true)}
onMouseLeave={() => setHover(false)}
>
<NavLink
to={`/catalogues/${item.name_parameterized}`}
className="list-item-link"
activeClassName="active"
>
{item.name}
</NavLink>
</li>
{isHover && <SubCategory data={item.children} />}
</>
);
}
Then use that component as: 然后使用该组件:
data.categories.map((item) => <ShowOnHover item={item} />)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.