【发布时间】:2018-03-20 11:52:02
【问题描述】:
有没有办法从 React 16 门户获取 ref。我尝试了以下方法,但似乎不起作用:
const Tooltip = props => (
ReactDOM.createPortal(
<div>{props.children}</div>,
// A DOM element
document.body
)
);
class Info extends React.Component {
render() {
return (
<Tooltip
ref={ el => this.tooltip = el }
>
My content
</Tooltip>
);
}
componentDidMount() {
console.log(this.tooltip); // undefined
}
}
我需要ref 来动态计算元素的最终位置!
【问题讨论】:
-
奇怪的是你用它来渲染到body中。我的意思是,对于门户网站,您首先需要一个有效的 dom 元素?
-
document.body不是一个有效的 dom 元素吗? -
是的,当然。我知道这只是一个例子。但这似乎是您尝试的错误方式。毕竟,门户的根 dom 是您要渲染的那个。我怀疑对于实际渲染 jsx 对象的普通组件 ref 应该仍然有效。你可以试试吗?
-
我想我遇到了问题。
ReactDOM.createPortalreturn 返回一个 ReactPortal 实例,它是一个有效的 ReactNode 但不是一个有效的 DOM 元素
标签: javascript reactjs portal