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

Подскажите, пожалуйста, где почитать как правильно передавать ref в дочерние

компоненты не теряя их свойств и сохраняя возможность отслеживания изменений через watch?
Если просто :param="dataRef" / :param="props.dataRef" - передается значение.
Задача иметь возможность реагировать на изменения примененные в одном дочернем компоненте в цепочке смежных копонентов.

46 ответов

122 просмотра

Реагировать можно только на объект props в дочерних компонентах. То что у вас пропадает реактивность говорит о том что вы из пропсов данные деструктурируете.

キャラクターセット-Kiniaev Автор вопроса
Stanislav Lashmanov
Реагировать можно только на объект props в дочерни...

Т.е. реагировать не на конкретное свойство внутри пропс, а на весь объект? При любой передаче ref в свойства в компоненте значение. Никак не пойму, это нормально и так и должно быть или что-то я делаю не так?

Props это computed на который можно реагировать. const foo = props.foo // потеряли реактивность, т.к. следим уже не за пропсами.

キャラクターセット-Kiniaev Автор вопроса
Stanislav Lashmanov
Props это computed на который можно реагировать. c...

watch (props.refId, ...) и вот тут уже лежит значение.

キャラクターセット-Kiniaev Автор вопроса
Stanislav Lashmanov
watch(() = > props.field, ...

Руководствуюсь - https://vuejs.org/guide/essentials/watchers.html

キャラクターセット-Kiniaev Автор вопроса
キャラクターセット Kiniaev
screenshot Руководствуюсь - https://vuejs.org/guide/essential...

Только ожидаю, что ref придет из свойства пропсов

キャラクターセット-Kiniaev Автор вопроса
Stanislav Lashmanov
Это другое же

Да!? А куда смотреть?

Пропсы реактивны как раз

キャラクターセット Kiniaev
Да!? А куда смотреть?

Я не знаю где это в доке, но foo !== foo.bar, это разные выражения.

Егор Старцев
Пропсы реактивны как раз

то есть watch(props.field) будет норм работать?

キャラクターセット-Kiniaev Автор вопроса
Stanislav Lashmanov
Я не знаю где это в доке, но foo !== foo.bar, это ...

Тут я вижу только одно утверждение. Но никак не пойму как это применимо к моей задаче ( Прошу пояснить.

キャラクターセット Kiniaev
Тут я вижу только одно утверждение. Но никак не по...

Следить можно только за рефами. Ты хочешь чтобы ты написал watch(1, ...) и оно автоматически знало когда ты изменил объект в котором лежала эта единица, так не работает.

キャラクターセット-Kiniaev Автор вопроса
Stanislav Lashmanov
Следить можно только за рефами. Ты хочешь чтобы ты...

Да, я понимаю, что следить можно только за рефами. В родительском компоненте я вкладываю реф в свойсва дочернего. Ожидаю, что в пропсах дочернего будет лежать реф, но там значение. Мой вопрос как следить за изменением реф в одном компоненте в других смежных компонентах?

キャラクターセット Kiniaev
Да, я понимаю, что следить можно только за рефами....

props не оборачивает то что вы передаёте в рефы дополнительно и не должен

キャラクターセット-Kiniaev Автор вопроса
Roman Kocherezhchenko 🇺🇦
Хз, не помню как к этому пришел :)

Просто я или плохо читаю и не туда нажимаю. https://vuejs.org/guide/essentials/watchers.html

キャラクターセット-Kiniaev Автор вопроса
Roman Kocherezhchenko 🇺🇦
вотчер для внутреннего состояния, а так емиты, v-m...

Да, но это очень громоздко, ведь наверняка все проще должно быть!?

キャラクターセット-Kiniaev Автор вопроса

Вот примерно в этом у меня и возникакет недопонимание. Он не то чтобы не оборачивает, он скорее разворачивает ссылки в значения.

キャラクターセット Kiniaev
Да, но это очень громоздко, ведь наверняка все про...

можно еще такие штуки использовать, https://www.youtube.com/watch?v=qGqebwUxWrw

キャラクターセット-Kiniaev Автор вопроса

Так это просто иной реактивный источник. Если предположить, что в пропсе лежит реф, то должно работать props.dataRef. У меня так не получается и потому я спросил, это я что-то делаю не так или так и должно быть. А если так и должно быть, то как сделать правильно )

キャラクターセット-Kiniaev Автор вопроса

нет, в вью даже defineModel завезли который делает тоже самое, ваше "элегантное" решение :)

キャラクターセット-Kiniaev Автор вопроса

Вот так проще и одной строчкой

キャラクターセット-Kiniaev Автор вопроса
キャラクターセット-Kiniaev Автор вопроса
キャラクターセット Kiniaev
Вот так проще и одной строчкой

Я не пытаюсь что-то доказать. Мне хочется научиться делать правильно.

キャラクターセット-Kiniaev Автор вопроса
Roman Kocherezhchenko 🇺🇦
https://www.youtube.com/watch?v=jJwKmoUut8A

Большое спасибо! Но все равно выходит, что для работы с ссылкой вместо прямой работы с ней нагородили эмит + компьютед и все это еще и "узаконили". Зачем!?

キャラクターセット Kiniaev
Большое спасибо! Но все равно выходит, что для раб...

можете сразу мутировать пропсы 🌚, впринципе можно, и, главное, удобно

キャラクターセット-Kiniaev Автор вопроса
Vlad 🍍 Starkovsky️️
https://blog.vuejs.org/posts/vue-3-3

Спасибо! Эта возможность в разделе Experimental Features.

キャラクターセット Kiniaev
Вот примерно в этом у меня и возникакет недопонима...

Он ничего не разворачивает. Если написать :foo="1" то туда и должна прийти единица.

キャラクターセット-Kiniaev Автор вопроса
Stanislav Lashmanov
Он ничего не разворачивает. Если написать :foo="1"...

А если :foo="dataRef" ? Он развернет (деструктурирует) ссылку в свойство.

キャラクターセット-Kiniaev Автор вопроса
Stanislav Lashmanov
Да, но речь была про то что он оборачивает.

Я такого нигде не говорил. Я сказал, что он развернет ссылку в значение.

キャラクターセット Kiniaev
Я такого нигде не говорил. Я сказал, что он развер...

Даже если так это ничего не меняет, надо следить за объектом пропсов

キャラクターセット-Kiniaev Автор вопроса

Да, Вы правы, большое спасибо! Я невнимательно прочитал документацию, сделал поспешные ошибочные предположения.

キャラクターセット Kiniaev
Да, Вы правы, большое спасибо! Я невнимательно про...

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

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Карта сайта