📅  最后修改于: 2023-12-03 14:54:43.838000             🧑  作者: Mango
提供给组件的 anchorEl 属性无效.
这个错误通常是在使用Material UI的Popover
组件时发生的。Popover
组件需要一个anchorEl
属性来指定它应该挂载在哪个元素上方。如果这个属性没有正确指定成一个HTML元素或者DOM节点,那么程序就会抛出这个错误。
anchorEl
指向了正确的元素或DOM节点在Popover
组件中,anchorEl
属性应该指向一个HTML元素或者DOM节点。如果你使用React,你可以使用ref
来引用它。
import React from 'react';
import Popover from '@material-ui/core/Popover';
function MyComponent() {
const anchorRef = React.useRef();
return (
<>
<button ref={anchorRef}>Click me</button>
<Popover anchorEl={anchorRef.current}>
<div>Popover content</div>
</Popover>
</>
);
}
anchorEl
不为null
如果anchorEl
为null
,那么Popover
组件就不会渲染。你可以使用一个条件语句来避免这种情况。
import React from 'react';
import Popover from '@material-ui/core/Popover';
function MyComponent() {
const [anchorEl, setAnchorEl] = React.useState(null);
return (
<>
<button onClick={(event) => setAnchorEl(event.currentTarget)}>Click me</button>
{anchorEl && (
<Popover anchorEl={anchorEl} onClose={() => setAnchorEl(null)}>
<div>Popover content</div>
</Popover>
)}
</>
);
}
Popover
组件在渲染时anchorEl
已经存在如果Popover
组件在渲染时anchorEl
属性是undefined
或者null
,那么程序就会抛出这个错误。你可以使用一个条件语句来避免这种情况。
import React from 'react';
import Popover from '@material-ui/core/Popover';
function MyComponent() {
const [anchorEl, setAnchorEl] = React.useState(null);
return (
<>
<button onClick={(event) => setAnchorEl(event.currentTarget)}>Click me</button>
{anchorEl && (
<Popover anchorEl={anchorEl} onClose={() => setAnchorEl(null)}>
<div>Popover content</div>
</Popover>
)}
{!anchorEl && <span>Click the button to open the popover.</span>}
</>
);
}
以上就是解决提供给组件的 anchorEl 属性无效.
错误的三种常见方法。如果你遇到了其它问题,可以查看错误信息的上下文来找到具体的原因。