代码之家  ›  专栏  ›  技术社区  ›  saricden

Marzipano+反应?

  •  0
  • saricden  · 技术社区  · 6 年前

    有人用过吗 Marzipano 360 Panorama Viewer 与ReactJS应用程序结合使用?

    有人知道怎么做吗?

    有一个想法是我可能会通过Marzipano ref 但是,对于原始的dom元素,我认为marzipano可能会在该元素中添加和删除额外的dom元素,因此我认为这可能会与react对dom的管理发生冲突并导致问题。

    另一个想法是在元素中渲染marzipano 外部 根reactdom元素,然后使用常规old document.getElementById 要访问它,并使用CSS在全景图需要可见时将marzipano元素覆盖在react应用程序上方。

    这两个都是黑客和远非理想,所以如果任何人有更好的想法,请张贴。

    (注意这是一个私人项目,所以更多的黑客想法是完全可以的)

    1 回复  |  直到 6 年前
        1
  •  1
  •   fagerbua    6 年前

    尽管有点笨拙,但可以将react与直接操作DOM的库一起使用。你的第一个想法是正确的,因为 Integrating with other libraries 解释如何与jquery集成:

    [L]ETS为通用jquery插件绘制了一个包装。

    我们将向根dom元素附加一个引用。内部 componentdidmount,我们将得到它的引用,以便将其传递给 jquery插件。

    为了防止安装后的反应接触到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} />;
      }
    }
    推荐文章