gpt4 book ai didi

reactjs - react-popper 安装位置不正确

转载 作者:行者123 更新时间:2023-12-04 12:23:15 25 4
gpt4 key购买 nike

我在 React 中构建了一个自定义 TreeView ,每个项目都包含一个使用 Popper 定位的下拉列表。由于子元素在渲染时不可见,因此 Popper 没有正确定位下拉列表,例如:
enter image description here
当树在 mount 上打开时(即 children 是可见的),定位是正确的:
enter image description here
树中的每个级别都通过 CategoryNavItem 呈现。组件,它本质上是这样的:

<div className={ className.join(' ') }>
<div className={ `collection-nav_item-link depth${depth}` } style={{ paddingLeft: `${paddingLeft}px`}}>
<Link to={ linkTo } onClick={() => { setIsOpen(!isOpen) }}>
<i className="collection-nav_item-link_icon"></i>
<span className="collection-nav_item-link_text">{ category.name }</span>
</Link>

<Dropdown
toggleClassName="btn-icon-white btn-sm"
toggleContent={ <Icon name="ellipsis-h" />}
position="bottom-end"
size="small"
items={[
{ text: 'Edit category' },
{ text: 'Add subcategory', onClick: (() => { dispatch(openAddSubcategory(category)) }) }
]} />
</div>
{ children }
</div>
Dropdown组件是我们使用 Popper 的地方,它在其他任何地方都能很好地工作。 CategoryNavItem 的可见性通过组件在 React 中的状态处理。
有什么办法可以触发波普尔的 update()在 React 中以编程方式使用方法?我们要给力 update切换项目的可见性时。

最佳答案

事实证明,我们只需要暴露 update属性(property)来自 usePopper hook,然后在设置下拉菜单的可见性时调用它,例如:

const { styles, attributes, update } = usePopper(referenceElement, popperElement, {
placement: placement,
modifiers: [
{ name: 'arrow', options: { element: arrowElement } },
{ name: 'offset', options: { offset: [ 0, 3 ] } }
]
});
同样:
const toggleDropdown = (e) => {
e.preventDefault();
e.stopPropagation();

setVisible(!visible);
update();
};

关于reactjs - react-popper 安装位置不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65585859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com