169 похожих чатов

У скоуп слотов нет видимости в @click? Хотел сделать что-то

по типу
<template #activator="{ showModal }">
<button @click="showModal = true">Showme {{ showModal }}</button>
</template>
Клик не отрабатывает, а вот в текстовой части выводит все верно

12 ответов

13 просмотров

в скопед слоте возвращай не стейт, а функцию которая стейт поменяет и засовывай её в клик

Alexander- Автор вопроса
Vladimir Voytenko ️
в скопед слоте возвращай не стейт, а функцию котор...

Это получается обязательно в методы её объявить когда байндишь в слот? А если да, то насколько это нормальная практика? Либо лучше через ref и @click="$refs.name.toggle"?

Alexander
Это получается обязательно в методы её объявить ко...

передать в скопед метод, лучше того, что пытались сделать вы

Alexander
Это получается обязательно в методы её объявить ко...

Не обязательно, маленькую функцию можно сразу в параметр передать.

Vladimir Voytenko ️
передать в скопед метод, лучше того, что пытались ...

А как тебе такое решение: <template #activator="{ obj }"> <button @click="obj.showModal = true">Showme {{ obj.showModal }}</button> </template> =D

Alexander- Автор вопроса
Vladimir Voytenko ️
передать в скопед метод, лучше того, что пытались ...

Я имею ввиду про дергать метод ref'ом vs дергать так, как вы подсказали. Что более vue-way

Alexander
Я имею ввиду про дергать метод ref'ом vs дергать т...

разные кейсы решаются, и то и другое норм

Alexander
Я имею ввиду про дергать метод ref'ом vs дергать т...

Через реф у вас получается странное решение. Есть рендер функция, которая рендерит кнопку. Кнопка зависит от параметра. Но изменяете вы параметр, используя обращение к компоненту персонально через родителя, и который предоставляет публичный метод для этого изменения. Не понятно, зачем здесь выходить за рамки слота. Передать сеттер - нормальное решение. Данные и изменение данных пойдут вместе

Alexander- Автор вопроса
Grigorii K. Shartsev
Не обязательно, маленькую функцию можно сразу в па...

Примерно так, получается? <slot name="activator" :showModal="() => {visible = true}"> Попытался вчитаться почему когда я пытался через showModal = true не отрабатывало, я правильно понял, что слот возвращает функция, соответственно ссылки на showModal в слоте и самом компоненте выходили разные?

Alexander
Примерно так, получается? <slot name="activator" ...

Слот - это место, где в компонент рендерится некоторое содержимое. То, что передаётся через слот - это шаблон, а в итоге рендер функция, которая на вход принимает параметры слота и по ним рендерит содержимое слота. Соответственно showModal = true - это просто внутри функции присваивание нового значение в аргумент этой функции. Изменение значения аргумента в теле функции не влияет на то, что передали в качестве значения аргумента

Grigorii K. Shartsev
Слот - это место, где в компонент рендерится некот...

<slot name='name' :param="value" /> - это аналог render this.$scopedSlots.name({ param: this.value }) А передача шаблона в слот <template #name="{ param }"> <button @click="param = x"> это аналог передачи рендер функции ({ param }) => h('button', listeners: { click: () => param = x } ) Т.е. просто присваивается внутри тела рендер функции новое значение в параметр. Никак не влияет на переданное значение

Alexander- Автор вопроса
Grigorii K. Shartsev
<slot name='name' :param="value" /> - это аналог r...

Большое спасибо! Надо было мне сразу функцию задебажить чтобы посмотреть что под капотом он локально в функцию копирует значения, тогда и пояснение не понадобилось бы. Изначально подумал, что там контекст компонента сохраняется через что-то наподобие ref.showModal в теле функции на клик 😢

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта