Size: a a a

JavaScript.Ninja

2020 July 02

CN

Calle Nord in JavaScript.Ninja
thanks!
источник

EN

El Nasurov in JavaScript.Ninja
Хотел спросить более опытных коллег)

Чем Вы руководствуетесь (сложность логики, наличие большое количество под-компонентов, необходимость пробрасывать данные на 2-3 компонента выше/ниже или "так просто удобнее"), когда принимаете решение выноса стейта какого-либо компонента в модуль Vuex ?


В моей голове след. картина:

Плюсы:
- Все мутации и экшены становятся прозрачными благодаря записям в vue-devtools
- удобно получать доступ ко всем данным этого компонента из его под-компонентов (не нужно делать кучу эмитов и пробросов пропсов)

Минусы:
- данный стейт будет висеть в проекте всегда. То есть независимо показывается компонент или нет.


По сути, если бы не этот минус (в серьезности которого, я также немного не уверен), можно было бы практически всем компонентам, где происходит какое-либо дробление на подкомпоненты, и есть некоторая относительно сложная логика хранить стейт как модуль vuex'а.
источник

IK

Illya Klymov in JavaScript.Ninja
El Nasurov
Хотел спросить более опытных коллег)

Чем Вы руководствуетесь (сложность логики, наличие большое количество под-компонентов, необходимость пробрасывать данные на 2-3 компонента выше/ниже или "так просто удобнее"), когда принимаете решение выноса стейта какого-либо компонента в модуль Vuex ?


В моей голове след. картина:

Плюсы:
- Все мутации и экшены становятся прозрачными благодаря записям в vue-devtools
- удобно получать доступ ко всем данным этого компонента из его под-компонентов (не нужно делать кучу эмитов и пробросов пропсов)

Минусы:
- данный стейт будет висеть в проекте всегда. То есть независимо показывается компонент или нет.


По сути, если бы не этот минус (в серьезности которого, я также немного не уверен), можно было бы практически всем компонентам, где происходит какое-либо дробление на подкомпоненты, и есть некоторая относительно сложная логика хранить стейт как модуль vuex'а.
Минус: невозможность привязать данные из стейта к v-model без костылей, минус: простота доступа к чужому состояниюб минус: скрытые зависимости между компонентами
источник

EN

El Nasurov in JavaScript.Ninja
Illya Klymov
Минус: невозможность привязать данные из стейта к v-model без костылей, минус: простота доступа к чужому состояниюб минус: скрытые зависимости между компонентами
Компьютед поле с геттером и сеттером считает костылем для привязки v-model ?

Например, инпут изменения телефона, данные которого хранятся в модуле vuex:
    phone: {
     get() {
       return this.$store.state.regForm.phone;
     },
     set(value) {
       this.$store.commit('regForm/' + setPhone, value);
     },
   },
источник

IK

Illya Klymov in JavaScript.Ninja
El Nasurov
Компьютед поле с геттером и сеттером считает костылем для привязки v-model ?

Например, инпут изменения телефона, данные которого хранятся в модуле vuex:
    phone: {
     get() {
       return this.$store.state.regForm.phone;
     },
     set(value) {
       this.$store.commit('regForm/' + setPhone, value);
     },
   },
Я понимаю как это работает, я три часа назад как раз лекцию про вьюкс читал :)
источник

IK

Illya Klymov in JavaScript.Ninja
El Nasurov
Компьютед поле с геттером и сеттером считает костылем для привязки v-model ?

Например, инпут изменения телефона, данные которого хранятся в модуле vuex:
    phone: {
     get() {
       return this.$store.state.regForm.phone;
     },
     set(value) {
       this.$store.commit('regForm/' + setPhone, value);
     },
   },
Да, потому что к примеру вы не сможете сделать такое для сущности в массиве :) когда у вас v-for + v-model
источник

IK

Illya Klymov in JavaScript.Ninja
Я прекрасно понимаю простоту "давайте сложим все в одну глобальную переменную" (чем по сути вьюкс и является) и не будем думать о потоках данных вообще
источник

IK

Illya Klymov in JavaScript.Ninja
Только именно потоки данных и описывают "логику приложения"
источник

IK

Illya Klymov in JavaScript.Ninja
Да, есть другой подход "компонент четко описывает чего ему надо от глобального хранилища" но у вьюкса проблемы с "четко"
источник

IK

Illya Klymov in JavaScript.Ninja
(как и вообще с типизацией)
источник

EN

El Nasurov in JavaScript.Ninja
Illya Klymov
Я прекрасно понимаю простоту "давайте сложим все в одну глобальную переменную" (чем по сути вьюкс и является) и не будем думать о потоках данных вообще
Я согласен.

Однако ведь также не круто, когда приходится делать огромное количество эмиттов и прокидываний пропсов..

В таких вопросах все решается индивидуально, смотря на кейс ? Или же все-таки существуют какие-либо сформулировавшиеся подходы, стратегии, best-practiсes по тому, как "правильно" реализовывать поток данных в компонентах ?
источник

IK

Illya Klymov in JavaScript.Ninja
Вью и "best practice" редко встречаются в одном предложении
источник

IK

Illya Klymov in JavaScript.Ninja
Все зависит от задач
источник

EN

El Nasurov in JavaScript.Ninja
Понял, спасибо большое за отклик и подробные комментарии)
источник

TG

Timofey Goncharov in JavaScript.Ninja
Из доки копирую и не работает css у меня...
источник

TG

Timofey Goncharov in JavaScript.Ninja
источник

TG

Timofey Goncharov in JavaScript.Ninja
sass работает css нет!
источник

e

erlan in JavaScript.Ninja
парни я правильно отправляю put запрос?
await API.put(`/api/v1/employees/${id}`, this.state.employeeUpdate, {
       headers: { "Content-Type": "application/json" },
     });
источник

МЖ

Мурат Жакен... in JavaScript.Ninja
erlan
парни я правильно отправляю put запрос?
await API.put(`/api/v1/employees/${id}`, this.state.employeeUpdate, {
       headers: { "Content-Type": "application/json" },
     });
Почти
источник

e

erlan in JavaScript.Ninja
Мурат Жакен
Почти
)
источник