Передача ссылки в привязку директивы приводит к превышению максимального рекурсивного обновления

#vue.js #directive #vue-composition-api

#vue.js #директива #vue-composition-api

Вопрос:

Я хочу создать директиву в Vue3 и использовать composition API. Я также хочу передать ссылку другому элементу как привязку к моей директиве. Итак, я написал следующий фрагмент кода:

 <template>
    <div class="content" v-context-menu="contextMenuElement">
        <SmartContextMenu ref="contextMenuElement" :items="[]" />
    </div>
</template>
// ...
<script>
//...
const contextMenuElement = ref(null)
//...
</script>
  

Что приводит к тому, что браузер вызывает эту ошибку:

Превышено максимальное количество рекурсивных обновлений

И я изменил привязку директивы таким образом, чтобы исправить ошибку:

 <template>
    <div class="content" v-context-menu="() => contextMenuElement">
        <SmartContextMenu ref="contextMenuElement" :items="[]" />
    </div>
</template>
// ...
<script>
//...
const contextMenuElement = ref(null)
//...
</script>
  

Так что в жизненных циклах директивы я должен использовать binding.value() вместо binding.value или даже binding .
Есть ли лучшее решение для этой проблемы (передача ссылки (ref ()) в директиву (привязка))?