Лучшая альтернатива для <slot/> в <textarea> в компоненте [Vue.js 3]

Я хочу создать компонент с текстовой областью и передать данные внутри него, например

<c-textarea> hello world </c-textarea>

но классический тег <slot/> не работает внутри текстовой области какая самая простая и чистая альтернатива

<template>
   <textarea><slot/></textarea>
</template>

в Vue.js 3

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете извлечь содержимое слота:

<template>
   <textarea>{{ $slots.default ? $slots.default()[0].children : ''}}</textarea>
</template>

По сути, это создает слот вручную, что дает вам элемент VNode, где children содержит содержимое слота.

Я бы действительно попытался найти другой способ, это грубо, подвержено ошибкам и, скорее всего, не то, что вы хотите сделать.

Лично я бы придерживался подхода v-model.

Вы должны использовать value и input для привязки контента вместо использования slot

Вот обновленная версия компонента CTextarea

<template>
  <textarea :value = "modelValue" @input = "$emit('update:modelValue', $event.target.value)">
  </textarea>
</template>

<script>
export default {
  name: 'CTextarea',

  emits: ['update:modelValue'],

  props: {
    modelValue: String,
  },
};
</script>

проверьте это пробное демо

Другие вопросы по теме

Похожие вопросы

Как убедиться, что первый вариант элемента радиогруппы выбран по умолчанию в этом приложении Angular Material?
Повторитель формы с опцией выбора не работает с ответом ajax
Всплывающее окно при наведении должно исчезать при прокрутке страницы — Material UI (MUI) v5 для React
У меня есть анимированная последовательность изображений, которая воспроизводится в цикле. Как подключить его к кнопке, которая переключается между воспроизведением и паузой?
Почему я не могу вызвать правильный div с помощью parentNode и nextSibling?
Crypto.subtle расшифровывает компактный jwe с ECDH-ES + A128KW - операция не удалась по причине, связанной с операцией
Операция Rxjs для нажатия нескольких кнопок и выполнения вызовов API
Неточность координат текстуры
Получение данных XLSX из Microsoft Sharepoint в запросе React/NodeJS
Как сохранить контактную информацию с веб-сайта на Android или iPhone с помощью кнопки HTML с интеграцией JS или PHP?