Warning: validateDOMnesting(...): <div> cannot appear as a descendant of <p>. See ... SomeComponent > p > ... > SomeOtherComponent > ReactTooltip > div.
SomeComponent我是和的作者SomeOtherComponent。但后者使用外部依赖项(ReactTooltip来自react-tooltip)。这可能是外部依赖项,但这让我可以尝试这里的论点,即它是“一些我无法控制的代码”。
SomeComponent
SomeOtherComponent
ReactTooltip
react-tooltip
鉴于嵌套组件工作正常(表面上),我应该对此警告有多担心?无论如何,我该如何改变这一点(假设我不想重新实现外部依赖项)?是否还有更好的设计我还不知道?
为了完整起见,下面是 的实现SomeOtherComponent。它只是渲染this.props.value,当鼠标悬停时:一个工具提示,显示“一些工具提示消息”:
this.props.value
class SomeOtherComponent extends React.Component { constructor(props) { super(props) } render() { const {value, ...rest} = this.props; return <span className="some-other-component"> <a href="#" data-tip="Some tooltip message" {...rest}>{value}</a> <ReactTooltip /> </span> } }
谢谢。
如果在使用 Material UI <Typography> https://material-ui.com/api/typography/时出现此错误,则您可以通过更改元素属性的值轻松地将 更改<p>为:<span>``component``<Typography>
<Typography>
<p>
<span>``component``<Typography>
<Typography component={'span'} variant={'body2'}>
根据排版文档:
component :用于根节点的组件。可以使用字符串来使用 DOM 元素或组件。默认情况下,它将变体映射到良好的默认标题组件。
因此,Typography 被选为<p>合理的默认值,您可以更改它。可能会有副作用…对我来说有用。