创建 ReactJS 门户
Creating a ReactJS Portal
我正在开发一个简单的模式和一些工具提示。我想了解一些关于门户的知识,所以决定尝试制作一个。我有以下代码:
const Portal = React.createClass({
render() { return null },
portalElement: null,
componentDidMount() {
let p = this.props.portalId && document.getElementById(this.props.portalId);
if(!p) {
let p = document.createElement('div');
p.id = this.props.portalId;
document.body.appendChild(p);
}
this.portalElement = p;
this.componentDidUpdate();
},
componentWillUnmount() {
document.body.removeChild(this.portalElement);
},
componentDidUpdate() {
render(<div {...this.props}>{this.props.children}</div>, this.portalElement);
}
});
当我 运行 这段代码时,我在控制台中收到以下错误:
Uncaught Error: _registerComponent(...): Target container is not a DOM element.
我的理解是它找不到将其安装在 body 中的元素。我已经尝试添加到 index.html 但这仍然没有解决它。
感谢您的帮助。
应该是 var p = ... 而不是让 p = ...
我正在开发一个简单的模式和一些工具提示。我想了解一些关于门户的知识,所以决定尝试制作一个。我有以下代码:
const Portal = React.createClass({
render() { return null },
portalElement: null,
componentDidMount() {
let p = this.props.portalId && document.getElementById(this.props.portalId);
if(!p) {
let p = document.createElement('div');
p.id = this.props.portalId;
document.body.appendChild(p);
}
this.portalElement = p;
this.componentDidUpdate();
},
componentWillUnmount() {
document.body.removeChild(this.portalElement);
},
componentDidUpdate() {
render(<div {...this.props}>{this.props.children}</div>, this.portalElement);
}
});
当我 运行 这段代码时,我在控制台中收到以下错误:
Uncaught Error: _registerComponent(...): Target container is not a DOM element.
我的理解是它找不到将其安装在 body 中的元素。我已经尝试添加到 index.html 但这仍然没有解决它。
感谢您的帮助。
应该是 var p = ... 而不是让 p = ...