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

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

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

18 ответов

29 просмотров

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

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 добавить

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно 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
Карта сайта