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

jQuery插件与React的集成

  •  10
  • Jayavel  · 技术社区  · 6 年前

    我在用 https://dbushell.com/Nestable/

    jQuery nestable解决了我的业务需求,在react drag/nestable组件中找不到确切的需求。所以我使用了这个jQuery插件。

    已初始化jQuery可嵌套功能,如下所示:

    componentDidMount() {
        this.$node = $(this.nestable); // this.nestable is a ref
    
        this.$node.nestable({
            group: 1,
            maxDepth: 4,
            expandBtnHTML:"",
            collapseBtnHTML:""
        });
    }
    

    enter image description here

    拖动之后,我可以看到group2出现了两次,我猜jQuery plugin会像下面这样克隆被拖动的元素:

    enter image description here

    在开发人员工具中: enter image description here

    enter image description here

    在react developer tools中,我可以看到DOM是正确的,而在native DOM中则不是!!

    是否可以在setState之后用虚拟DOM替换本机DOM,或者是否可以对jQuery处理的跟踪DOM作出反应?

    我接受@Patrick Evans的评论,我在这里寻找一个解决方案或者合适的基于react的组件,比如jQuery nestable。

    2 回复  |  直到 6 年前
        1
  •  1
  •   jathanasiou    6 年前

    React-nestable 似乎有相同的行为作为jQuery插件,可以节省你很多麻烦。根据我的经验,将jQuery与React混合在一起非常容易造成麻烦。

        2
  •  0
  •   Hriday Modi Victor Manuel    6 年前

    这里有一个黑客解决方案:

    在Nestable中,您有一个on change事件。因此,将列表的顺序作为组件的状态,当您拖放元素时,可以更新状态,并且应该重新呈现列表。

    我相信这会解决你的问题。