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

Подскажите правильный патерн - передаю в компонент через props значение

которое будет меняться в компоненте и изменения через emit уходит выше.
Если внутри компонента указываю через v-model привязку к элементу то ругается что неожиданная мутация. Что логично, но как правильно?

18 ответов

28 просмотров

Не меняй пропс, а только емити. Он сам спустится назад

Mihail- Автор вопроса
Daria Shuleko
Не меняй пропс, а только емити. Он сам спустится н...

да я так и делаю но удобно сразу пропс вставить в v-model вот так но он тогда ругается

Mihail- Автор вопроса
Daria Shuleko
Оберни в computed c геттером и сеттером

да что то в голове что то такое такое мелькнуло. т.е. в set делать emit? Я реализовал иначе - сделал props и data в которой локальный значения привязаны к элементам а в created локальным значениям из дата присваиваются props. Ну а дальше на все изменения emit и в итоге все работает, но чувство что это костыль. Через сеттеры и гетеры правильней?

Mihail
screenshot да я так и делаю но удобно сразу пропс вставить в ...

Не удобно и ведет к куче проблем, кроме того судя по коду тебе здесь вся formData и не нужна

Mihail- Автор вопроса
Nikolay
Не удобно и ведет к куче проблем, кроме того судя ...

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

Mihail
ну да, мне из всего объекта три значения надо. Но ...

дальше обычный emit без всяких чудес с объектами и ключами, либо computed свойство с get и set, которое на запись эмитит а на прием передает

Mihail- Автор вопроса
Nikolay
дальше обычный emit без всяких чудес с объектами и...

про computed подсказали, там я понял. Поясни ,пожалуйста, а что изменит если я буду в пропс не объект передавать а конкретное значение (число). Разве от того что я в v-bind укажу пропс с одиночным значением, а на изменения ввода буду emit делать у меня ругатсья не будет что я меняю props?

Mihail
про computed подсказали, там я понял. Поясни ,пожа...

а ты не будешь менять проп, ты будешь менять computed

Mihail
про computed подсказали, там я понял. Поясни ,пожа...

Что-то такое получится <input v-model="prop"> { props: { someValue: { type: String, default: '' } } computed: { prop: { get() { return this.someValue }, set(newValue) { this.$emit('input', newValue) } } } }

Mihail- Автор вопроса
Nikolay
а ты не будешь менять проп, ты будешь менять compu...

а ну такой вариант я понял. думал что то иное еще ты предлагал. Спасибо!

Mihail
а ну такой вариант я понял. думал что то иное еще ...

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

Mihail- Автор вопроса
Nikolay
Другой вариант это твоя запись но без промежуточно...

Так а она не работает. У меня на нее Eslint ругается до ошибки :) Говорит нельзя мутировать props

Mihail
Так а она не работает. У меня на нее Eslint ругает...

Ты никогда не сможешь мутировать проп, это нормально. Вот о чем я говорю <input @input="$emit('input', $event)" :value="someValue"> { props: { someValue: { type: String, default: '' } } }

Mihail- Автор вопроса
Nikolay
Ты никогда не сможешь мутировать проп, это нормаль...

ну да, это не работает с EsLint и без объекта. Сделал на computed, работает! Кода наверное чуть больше, но он читаемый хорошо и все логично. 👍

Mihail
да что то в голове что то такое такое мелькнуло. т...

В created - это если данные не асинхронные и уверен, что не будут меняться посередине процесса. Иначе watch

tacek tacek
Да, побольше watch добавить

А как обрабатывать в компоненте изменения пропса?

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта