vue.draggable.next icon indicating copy to clipboard operation
vue.draggable.next copied to clipboard

TypeError: Cannot set properties of null (setting '__draggable_context')

Open keziakoko opened this issue 3 years ago • 40 comments

Hello,

I am getting the following error when my page loads:

TypeError: Cannot set properties of null (setting '__draggable_context')
    at addContext (node_modules\vuedraggable\dist\vuedraggable.umd.js:4478:1)
    at eval (node_modules\vuedraggable\dist\vuedraggable.umd.js:4523:1)
    at Array.forEach (<anonymous>)
    at ComponentStructure.updated (node_modules\vuedraggable\dist\vuedraggable.umd.js:4522:1)
    at Proxy.updated (node_modules\vuedraggable\dist\vuedraggable.umd.js:4829:1)
    at callWithErrorHandling (node_modules\@vue\runtime-core\dist\runtime-core.esm-bundler.js:155:1)
    at callWithAsyncErrorHandling (node_modules\@vue\runtime-core\dist\runtime-core.esm-bundler.js:164:1)
    at Array.hook.__weh.hook.__weh (node_modules\@vue\runtime-core\dist\runtime-core.esm-bundler.js:2685:1)
    at flushPostFlushCbs (node_modules\@vue\runtime-core\dist\runtime-core.esm-bundler.js:356:1)
    at flushJobs (node_modules\@vue\runtime-core\dist\runtime-core.esm-bundler.js:401:1)

I cannot drag anything, when I try to drag I get the following error:

node_modules\vuedraggable\dist\vuedraggable.umd.js:4974 Uncaught TypeError: Cannot read properties of null (reading 'index')
    at Proxy.onDragUpdate (node_modules\vuedraggable\dist\vuedraggable.umd.js:4974:1)
    at Proxy.eval (node_modules\vuedraggable\dist\vuedraggable.umd.js:4694:1)
    at Sortable.eval (node_modules\vuedraggable\dist\vuedraggable.umd.js:4705:1)
    at dispatchEvent (node_modules\sortablejs\modular\sortable.esm.js:916:1)
    at _dispatchEvent (node_modules\sortablejs\modular\sortable.esm.js:961:1)
    at Sortable._onDrop (node_modules\sortablejs\modular\sortable.esm.js:2216:1)
    at Sortable.handleEvent (node_modules\sortablejs\modular\sortable.esm.js:2269:1)
    at Sortable.__trace__ [as handleEvent] (node_modules\@bugsnag\browser\dist\bugsnag.js:2764:1)

I have tried downgrading to versions 4.0.1 as well as version 4.0.0 and both still throw the error. This is my component:

<draggable item-key="id" v-model="person" handle=".gripIcon" @start="drag=true" @end="drag=false" tag="transition-group" :component-data="{name:'flip-list'}">
    <template #item="{element,index}">
        <component :is="element.name" :id="element.id"
                   v-bind:key="element.id"
                   v-on:delete-row="deleteRow(index)"
                   v-on:update-info="data => updateInfo(index,data)">
        </component>
    </template>
</draggable>

Please assist.

keziakoko avatar Apr 25 '22 11:04 keziakoko

This issue is never ending what is this? I get this issue all the time now??? This has broken the app completely. Hopefully this is resolved soon.

JokerMartini avatar Apr 25 '22 15:04 JokerMartini

I noticed the authors own code examples don't even work. I think he needs to update them.

JokerMartini avatar Apr 25 '22 15:04 JokerMartini

man,i have same question with you,but it may be not Stable Recurrence,Have you solved it?

superchangme avatar Apr 26 '22 01:04 superchangme

I noticed the authors own code examples don't even work. I think he needs to update them.

Do you use vite ?

superchangme avatar Apr 26 '22 01:04 superchangme

They don't work with vite or webpack

JokerMartini avatar Apr 26 '22 02:04 JokerMartini

They don't work with vite or webpack

what a pity,i remove tag="transition-group"

superchangme avatar Apr 26 '22 03:04 superchangme

I have not solved it, it is still happening. I do not use vite.

keziakoko avatar Apr 26 '22 08:04 keziakoko

Removing the tag="transition-group" worked for me. I no longer get the error. Kinda sad though cause now there's no more smooth transitions when dragging and swapping items!

keziakoko avatar Apr 26 '22 08:04 keziakoko

in order to work you have to downgrade your vue and that solves it. go to 3.2.30

JokerMartini avatar Apr 26 '22 13:04 JokerMartini

Currently running vue version 3.0.0. We have not upgraded it yet.

keziakoko avatar Apr 26 '22 13:04 keziakoko

if that is the case im not sure why it's broken on your end.

JokerMartini avatar Apr 26 '22 15:04 JokerMartini

Same error for me, i couldn't make it run with tag="transition-group" (vite, vue 3, typescript) by following the simple code example guide, i decided to switch the SortableJS vanilla version, hope could it be fixed, thank you!

redrbrt avatar Apr 28 '22 04:04 redrbrt

Not working for me either, I'm using Vue 3.2.33.

Draggable works fine without the transition on it, but I'm getting the same error as soon as I add tag="transition-group"

gbaggaley avatar Apr 28 '22 11:04 gbaggaley

Will the official fix this problem? I see that the last version is still released in 2020

hooray avatar May 02 '22 13:05 hooray

This error did not happen to me before and started to happen when I performed an npm update. The error was fixed by setting vue to version 3.2.30 currently 3.2.33 "vue": "3.2.30",

mreduar avatar May 05 '22 22:05 mreduar

Can you use version 3.2.30 without errors

tujianglin avatar May 09 '22 01:05 tujianglin

There seems to be a pull request #145 with a fix for this issue. I hope there will be soon a release with it.

Seuthes avatar May 11 '22 11:05 Seuthes

I don't know of the dev works on the repo anymore

On Wed, May 11, 2022, 7:32 AM Seuthes @.***> wrote:

There seems to be a pull request #145 https://github.com/SortableJS/vue.draggable.next/pull/145 with a fix for this issue. I hope there will be soon a release with it.

— Reply to this email directly, view it on GitHub https://github.com/SortableJS/vue.draggable.next/issues/140#issuecomment-1123622724, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKZ4LI65QPVIA4BMKQOTYDVJOLEHANCNFSM5UIF3DTQ . You are receiving this because you commented.Message ID: <SortableJS/vue. @.***>

JokerMartini avatar May 12 '22 03:05 JokerMartini

I don't know of the dev works on the repo anymore On Wed, May 11, 2022, 7:32 AM Seuthes @.> wrote: There seems to be a pull request #145 <#145> with a fix for this issue. I hope there will be soon a release with it. — Reply to this email directly, view it on GitHub <#140 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKZ4LI65QPVIA4BMKQOTYDVJOLEHANCNFSM5UIF3DTQ . You are receiving this because you commented.Message ID: <SortableJS/vue. @.>

I think the official has given up this repo, so we're on our own. maybe we need to migrate to the original sortable.js

hooray avatar May 12 '22 03:05 hooray

This is a helpless choice. I have to reduce my version. I still hope to use vue-core@next as soon as possible

GAtomis avatar May 16 '22 03:05 GAtomis

我使用了: "vue": "^3.2.25" "vite": "^2.8.0" "vuedraggable": "^4.1.0"

近期重新install或update后发现了bug,通过移除 tag="transition-group" 后解决了此问题

hellozhaoxudong avatar May 27 '22 03:05 hellozhaoxudong

remove tag="transition-group"

shenjilina avatar May 27 '22 07:05 shenjilina

我使用了: "vue": "^3.2.25" "vite": "^2.8.0" "vuedraggable": "^4.1.0"

近期重新install或update后发现了bug,通过移除 tag="transition-group" 后解决了此问题

不能说解决吧,只能说用这个办法可以通过移除特性的方式避开这个 bug ,我觉得如果这个仓库官方不打算维护了,将 vue-draggable 替换为 sortable 才是最合适的方案,因为 vue-draggable 内核也是基于 sortable 开发的

hooray avatar May 27 '22 07:05 hooray

I was having this same issue and published a thin wrapper around sortablejs that seems to work more consistently. Feel free to try it out and leave feedback at https://github.com/MaxLeiter/sortablejs-vue3.

MaxLeiter avatar Jun 06 '22 08:06 MaxLeiter

@MaxLeiter Was having the exact same issue so I tried out your library. Unfortunately I got this issue when I try to use it :

runtime-core.esm-bundler.js?9d6a:2948 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'isCE')
    at renderSlot (runtime-core.esm-bundler.js?9d6a:2948:1)
    at eval (sortablejs-vue3.es.js?e663:76:1)
    at renderList (runtime-core.esm-bundler.js?9d6a:2879:1)
    at eval (sortablejs-vue3.es.js?e663:74:1)
    at normalizeChildren (runtime-core.esm-bundler.js?9d6a:6946:1)
    at createBaseVNode (runtime-core.esm-bundler.js?9d6a:6699:1)
    at _createVNode (runtime-core.esm-bundler.js?9d6a:6801:1)
    at createVNodeWithArgsTransform (runtime-core.esm-bundler.js?9d6a:6657:1)
    at createBlock (runtime-core.esm-bundler.js?9d6a:6632:1)
    at Proxy.eval (sortablejs-vue3.es.js?e663:69:1)

FeckNeck avatar Sep 02 '22 07:09 FeckNeck

@FeckNeck open an issue there please

MaxLeiter avatar Sep 02 '22 16:09 MaxLeiter

Guys.. for me its working with simply removing tag="transition-group" and using v-bind="dragOptions"

computed:{
    dragOptions() {
        return {
            animation: 250,
            group: "people",
            disabled: false,
            ghostClass: "ghost"
        };
    },
}

after that remember remove any transitions effect you have in your css for the dragged element.

ceciogit avatar Sep 22 '22 13:09 ceciogit

Guys.. for me its working with simply removing tag="transition-group" and using v-bind="dragOptions"

computed:{
    dragOptions() {
        return {
            animation: 250,
            group: "people",
            disabled: false,
            ghostClass: "ghost"
        };
    },
}

after that remember remove any transitions effect you have in your css for the dragged element.

Thanks @ceciogit This also worked for me 👍

usmanlogin avatar Sep 26 '22 08:09 usmanlogin

Hi guys, this is how I solved it, but need to change the source code, but there will be [Vue warn]: <TransitionGroup> children must be keyed. But don't add key. For now, let's do that. We need to change another way of thinking to solve this problem, such as not using vue version to develop

before:`  const defaultNodes = normalizedList.flatMap((element, index) =>
    item({ element, index }).map(node => {
      node.key = getKey(element);
      node.props = { ...(node.props || {}), "data-draggable": true };
      return node;
    })
  );`
after:`const defaultNodes = normalizedList.flatMap((element, index) =>
    item({ element, index }).map(node => {
      node.key = getKey(element);
      node.props = { ...(node.props || {}), "data-draggable": true };
      return cloneVNode(node);
    })
  );`

Liberty-liu avatar Oct 18 '22 05:10 Liberty-liu

I was able to get rid of the error by removing tag="transition-group" but still keep a nice transition by adding the prop :animation="150"

danielkellyio avatar Dec 27 '22 17:12 danielkellyio