Marzipano + ReactJS?

时间:2018-06-29 04:52:16

标签: javascript reactjs 360-panorama

有人将Marzipano 360 Panorama Viewer与ReactJS应用程序一起使用吗?

有人对如何做到有任何想法吗?

我曾经想过可能将React虚拟dom的ref传递给Marzipano到原始DOM元素,但是我认为Marzipano可能会在该元素中添加和删除其他DOM元素,因此我认为这可能与React对DOM的管理并引起问题。

另一个想法是将Marzipano渲染到根ReactDOM元素的外部元素中,然后使用常规的旧document.getElementById进行访问,并使用CSS将Marzipano元素覆盖在React之上需要显示全景照片时使用的应用程序。

两者都很笨拙而且远非理想,因此,如果有人有更好的主意,请发布。

(请注意,这是针对个人副项目的,因此完全可以使用更多有创意的想法)

1 个答案:

答案 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} />;
  }
}