без создания компонента с рендер функцией? Тип такого:
const SlotRender = defineComponent({
props: {
Slot: { type: Function },
},
render() { return h('td', this.$props.slot()); }
});
> слот, полученный из потомка Это как?
С помощью provide/inject. const columns = inject('table'); onMounted(() => { columns?.push({column: slots.default}); });
Если так делать, то либо рендер функция, либо компонент отдельный, как slotrenderer выше. Последний можно в вычисляемом свойстве генерировать и в динамический компонент прокидывать. Но в целом выглядит крайне специфическим решение. И в передаче от родителя дальнему предку. И в мутации внедрённого свойства
Имхо полезно только для лоулевел ui компонент, типа таблиц, табов. Чтобы получить качественный DX. Вдохновился конечно el-table. <el-table><el-table-column #default="scope">любой валидный html со всеми vue фишками {{scope.prop}}</el-table-column></el-table>
А если слоты поменяются после маунта?
Я правда не понял что имеешь введу под изменением слотов. Если данные внутри слота меняются то все прекрасно работает. Оно же по ссылке
Когда в один момент времени слот передаётся, а в другой - не передаётся
Ну скоуп слоты кстати всегда должны быть на верху и они мне собственно и нужны.
если это все делается ради того, чтобы просто иметь возможность стилизовать строку/столбец через слот, то это лютый оверкилл какой-то
Я не знаю альтернативы 🙁
Обычно хватает scoped-slots, но надо смотреть, что именно вы делаете там образом)
Хватает scoped-slots для чего? Как-то отстал от жизни в последние время. Мб и правда способы красивее и лучше существуют. Есть референц?
Обсуждают сегодня