有人将Marzipano 360 Panorama Viewer与ReactJS应用程序一起使用吗?
有人对如何做到有任何想法吗?
我曾经想过可能将React虚拟dom的ref
传递给Marzipano到原始DOM元素,但是我认为Marzipano可能会在该元素中添加和删除其他DOM元素,因此我认为这可能与React对DOM的管理并引起问题。
另一个想法是将Marzipano渲染到根ReactDOM元素的外部元素中,然后使用常规的旧document.getElementById
进行访问,并使用CSS将Marzipano元素覆盖在React之上需要显示全景照片时使用的应用程序。
两者都很笨拙而且远非理想,因此,如果有人有更好的主意,请发布。
(请注意,这是针对个人副项目的,因此完全可以使用更多有创意的想法)
答案 0 :(得分:1)
可以将React与直接操作DOM的库一起使用,尽管有些笨拙。您的第一个想法是正确的,正如Integrating with other libraries解释了如何与JQuery集成:
[L]让我们为通用jQuery插件设计一个包装器。
我们会将ref附加到根DOM元素。内 componentDidMount,我们将获得对其的引用,以便将其传递给 jQuery插件。
为防止React在安装后接触DOM,我们将返回 render()方法为空。元素没有 属性或子元素,因此React没有理由对其进行更新, 免费使用jQuery插件来管理DOM的那部分:
class SomePlugin extends React.Component {
componentDidMount() {
this.$el = $(this.el);
this.$el.somePlugin();
}
componentWillUnmount() {
this.$el.somePlugin('destroy');
}
render() {
return <div ref={el => this.el = el} />;
}
}