Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以将react上下文注入react中根目录外的div(在主体下)_Javascript_Reactjs_Cytoscape.js_React Context_Popper.js - Fatal编程技术网

Javascript 是否可以将react上下文注入react中根目录外的div(在主体下)

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

我正在与react cytoscape library合作。尝试集成到cytoscape的popper插件。 popper“content”属性期望返回一个div元素,描述附加到“body”元素的popper。 由于上下文提供程序位于根元素下,因此该div不能是该上下文的使用者。 如何在定义根之外的popper元素中使用相同的上下文

使用cytoscape的react组件,但是cytoscape的插件是纯js的

<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-您不必这样做。只要在合适的时候做就行了。我在上面添加了一个使其有条件的示例。