🅅aleriy
если юзер сталкивается с косяком, просто жмякает и мне приходит полный дамп стейта приложения
Armen
Да, просто пока сам не споткнёшься не поймёшь, что нужно
Роман
мой костыль пока выглядит так
<loader :isPending="isPending" >
<template v-if="isPending == false">
Armen
<template>
<div v-if="isPending">
<v-progress-circular indeterminate color="primary"></v-progress-circular>
</div>
<div v-else >
<slot v-bind="data"></slot>
</div>
</template>
//////
<loader :isPending="isPending" :data="data" >
<template slot-scope="{ name }">
<h2 class="display-1">{{ name }}</h2>
</template>
</loader>
Armen
Но это надо проверить
Armen
Ой
Armen
Сек
Armen
Пофиксил
Armen
Надо ещё проп data в компоненте лоадер
Александр
Новый супергерой Фиксмен.
Александр
Фиксит говнокод.
Александр
Может это делать даже на продакшн
Armen
Другим говнокодом
Александр
Замазывает щели
Armen
Скотчем
Stanislav
Александр
У фиксмена обязательно должна быть недельная небритость и красные вены в глазах.
Armen
Armen
https://codesandbox.io/s/qx849m62y9
Rick
Armen
Роман
Armen
Armen
А про уровни то там пофиг
Роман
ща покурю slot-scope
Armen
<template>
<div v-if="isPending">
<v-progress-circular indeterminate color="primary"></v-progress-circular>
</div>
<div v-else >
<slot v-bind="data"></slot>
</div>
</template>
//////
<loader :isPending="isPending" :data="data" >
<template slot-scope="data">
<h2 class="display-1">{{ data.name }}</h2>
<h2 class="display-1">{{ data.surname }}</h2>
<img :src="data.avatar.src"/>
</template>
</loader>
Armen
Можно вот так, но для удобности я сделал там деструктуризацию
Роман
Звучит как ответ мой вопрос
> Слот с ограниченной областью видимости — это особый тип слота, который применяется как повторно используемый шаблон, то есть в этот слот передаются данные, а не уже отрендеренные элементы.
Armen
<template>
<div v-if="isPending">
<v-progress-circular indeterminate color="primary"></v-progress-circular>
</div>
<div v-else >
<slot v-bind="data"></slot>
</div>
</template>
//////
<loader :isPending="isPending" :data="data" >
<template slot-scope="{name, surname, avatar}">
<h2 class="display-1">{{ name }}</h2>
<h2 class="display-1">{{ surname }}</h2>
<img :src="avatar.src"/>
</template>
</loader>
Иван
Иван
Мои глаза мне не отказывают?
Иван
Тут за вьюкс топят?)
Armen
Это всё одмен
Armen
Я перешёл на светлую сторону
Роман
Роман
кажется работает, даже если не тащить данные
<loader :isPending="isPending" >
<template slot-scope="ololo">
Роман
главное slot-scope указать
Иван
Ну я говорю, это просто народ начинает вкуривать что что-то сложнее большого виджета (особенно если данные с бэка активно юзаются) без вьюкса хрен напишешь
Armen
Ненене так нельзя
Armen
Ибо компонент должен передать данные слоту сам
Armen
v-bind="data"
Armen
А чтобы он мог это сделать, надо ему дать дату
Роман
а чего тогда работает?
Armen
А что работает?
Armen
Вывод данных работает?
Иван
Бле, я ору с вашего диалога
Роман
да, вывод
Роман
так данные выводятся, ошибок в консоли нет
<template slot-scope="ololo">
Иван
Ну правильно все вроде. Ты в потомке на слот вешаешь скоуп?
Роман
так данные выводятся, но с ошибками
<template>
Armen
ЛОЛ, т.е. слоты ограниченой областью видимости имеют доступ к данными экземпляра, в котором объявлены?)
Armen
Норм так
🐏 Alexander
Роман
ага
Armen
Роман
меня устраивает :)
Armen
Роман
пробовал, ошибки есть. Типа как будто и нет скоупа
Armen
Armen
Или где-то прощёлкал
Иван
Так, падажжи
Иван
Все что объявлено в родительском темплейте имеет доступ к данным родителя
Armen
Да, но я чот решил, что слоты с ограниченной областью видимости не имеют
Armen
Область видимости же ограниченная)
Иван
Это которые scope?
Иван
Они просто дополнительно ещё и к данным потомка имеют доступ, именно к тем, которые потомок передал
🅅aleriy
хотелось бы понять зачем для врапера лоадера делать slot-scope?
Роман
получается, что слоты с ограниченной областью видимости умеют подтаскивать к родительским данным, данные из потомка, поэтому они сделаны ленивым рендером
Роман
<loader :isPending="isPending" >
<template slot-scope="fake">
<h2 class="display-1">{{data.name}}</h2>
Armen
Роман
если не будет slot-scope, то я получу в консоль
[Vue warn]: Error in render: "TypeError: Cannot read property 'name' of null"
Иван
Блин
Иван
Чет вы тупите
Иван
Что за "data.name"?
Иван
Где data объявлена?
Роман
Armen
Вот посмотри