Javascript 是否可以将react上下文注入react中根目录外的div(在主体下)
我正在与react cytoscape library合作。尝试集成到cytoscape的popper插件。 popper“content”属性期望返回一个div元素,描述附加到“body”元素的popper。 由于上下文提供程序位于根元素下,因此该div不能是该上下文的使用者。 如何在定义根之外的popper元素中使用相同的上下文 使用cytoscape的react组件,但是cytoscape的插件是纯js的Javascript 是否可以将react上下文注入react中根目录外的div(在主体下),javascript,reactjs,cytoscape.js,react-context,popper.js,Javascript,Reactjs,Cytoscape.js,React Context,Popper.js,我正在与react cytoscape library合作。尝试集成到cytoscape的popper插件。 popper“content”属性期望返回一个div元素,描述附加到“body”元素的popper。 由于上下文提供程序位于根元素下,因此该div不能是该上下文的使用者。 如何在定义根之外的popper元素中使用相同的上下文 使用cytoscape的react组件,但是cytoscape的插件是纯js的 <body> <div id=root> <St
<body>
<div id=root>
<Style_Provider>
.
.
.
</Style_Provider>
</div>
<div id="popper">
// need to access to style context
</div>
</body>
.
.
.
//需要访问样式上下文
作为一个例子,解决这个用例:
门户提供了一种一流的方法,可以将子节点呈现到父组件的DOM层次结构之外的DOM节点中
下面是一个使用上下文的示例:
const ExampleContext=React.createContext(
“默认上下文”
);
类示例扩展了React.Component{
render(){
返回(
这是父组件。
);
}
}
类MyPortal扩展了React.Component{
静态上下文类型=ExampleContext;
render(){
返回ReactDOM.createPortal(
这是“我的门户”,上下文内容是“{This.context}”,
document.getElementById(“门户”)
);
}
}
ReactDOM.render(
,
document.getElementById(“根”)
);代码>
popper强制我将其附加到“Body”中。那么,你知道我怎样才能在这种限制下访问样式上下文吗?不确定,但可能想在react@EricHasselbring-门户正好解决了这个问题,很好的一个!你用过这个吗?我无法将Popper插件与react cytoscape集成。具体来说,Cytoscape.use(Popper)抛出一个错误,表示目标未定义。Popper动态创建那些“div”。因此,我最初无法创建“MyPortal”组件。@cryptoun-您不必这样做。只要在合适的时候做就行了。我在上面添加了一个使其有条件的示例。