
Margarita
25.05.2018
04:32:50
В нем делаешь <Form><Input/><Imput/></Form>, где форм и инпут - бутстраповская хрень

Александр
25.05.2018
04:33:06
не для этого разносится все по компонентам
а для переиспользования

Google

Александр
25.05.2018
04:33:30
и это касается не только реакта

Margarita
25.05.2018
04:34:03
Переиспользование-то можно делать и в цикле
Сильно зависит от того, что именно тебе надо переиспользовать

Александр
25.05.2018
04:34:14
каким образом?
DRY

Margarita
25.05.2018
04:34:25
Если там прям много логики, то лучше вынести в компонент отдельный

ed
25.05.2018
04:34:54
я пытаюсь разнести по компонентам, чтобы 1 раз написать логику обработки валидаторов, показа прелоадера и прочего, потом просто из этих "компонентов" собрать форму, передать методы и все
в итоге получить нечто подобное
<v-form @submit="handleSubmit">
<v-input type="text" name="1" validators="{['isRequired', 'isEmail', (value) => {} ]}"/>
<v-input type="text" name="2"/>
</v-form>

Margarita
25.05.2018
04:34:55
Если это просто опшн в селекте, то резонно просто пройтись по данным например и вывести опшн для каждой штуки данных

ed
25.05.2018
04:35:45
чтобы вот то, что в бутстраповской доке, типо
onReset (evt) {
evt.preventDefault();
/* Reset our form values */
this.form.email = '';
this.form.name = '';
this.form.food = null;
this.form.checked = [];
/* Trick to reset/clear native browser form validation state */
this.show = false;
this.$nextTick(() => { this.show = true });
} было уше зашито и не нужно было дублировать

zinge
25.05.2018
04:35:54

Margarita
25.05.2018
04:35:57
Во вью же вроде директивы есть, чтобы валидировать всякое
Я точно не помню

ed
25.05.2018
04:36:12

Google

Margarita
25.05.2018
04:36:13
Ну всм, можно валидировать директивами

ed
25.05.2018
04:36:23
но, мне ошибки формы надо показать только при сабмите

Margarita
25.05.2018
04:36:27
Есть всякие плагины типа vee-validate
Которые через директивы работают
Можно свою кастомную штуку так сделать

ed
25.05.2018
04:37:58
vee-validate работает через директивы и подсвечивает ошибки сразу, мне их надо связть с формой, чтобы при сабмите показались, а как только что-то начали менять - убралось
чтобы инпуты дизейблились если в форму передали fetching=true
и подобные штуки
но, я не понимаю как это организовывается нормально на вью

Margarita
25.05.2018
04:42:04
Почему при клике на сабмит нельзя валидировать форму?
onSubmit() { if (this.validate()}....}

zinge
25.05.2018
04:43:06

Margarita
25.05.2018
04:43:21

ed
25.05.2018
04:43:34
а выше говорили что это не гуд (и вроде как это не гуд)

Margarita
25.05.2018
04:45:16

ed
25.05.2018
04:45:27

Margarita
25.05.2018
04:45:35
<Input v-model="myInput"/>
А валидатор на сабмите

Google

ed
25.05.2018
04:46:21
типо {name:['isRequired'], email:['isEmail']}

zinge
25.05.2018
04:48:56

ed
25.05.2018
04:50:12

zinge
25.05.2018
04:51:40

Margarita
25.05.2018
04:52:09
Я обычно так задачи вроде твоей решаю
Может быть, пригодится

ed
25.05.2018
04:52:48
Margarita спасибо

Margarita
25.05.2018
04:53:20
Посмотри, у меня data, которую отображает инпут, лежит в компоненте Form

Roman
25.05.2018
04:54:07
watch: {
'$root.data'() {
console.log('ROOT CHANGED')
}
},
нужно получить оповещение о том что this.$root.data изменился в компоненте, но выше указанный вариант почему-то не срабатывает, что не так?

zinge
25.05.2018
04:54:13

Margarita
25.05.2018
04:54:24

ed
25.05.2018
04:55:06
и рендер ошибки

Margarita
25.05.2018
04:55:20

zinge
25.05.2018
04:55:28

Margarita
25.05.2018
04:55:40
Отправляешь ивент из своего сложного ребенка, в иненте дата

Google

Margarita
25.05.2018
04:55:45
Форма валидирует дату

ed
25.05.2018
04:55:46
тогда вообще получается винегрет, валидирую на уровне формы, а потом инпуту передаю ошибку которая как-то записалась в данные формы

Roman
25.05.2018
04:55:57

Margarita
25.05.2018
04:56:14
Это форма может отправить или не отправить
Вообще на самом деле разные подходы можно использовать
Можно провалидировать на уровне инпута и отправить наверх месседж об ошибке
Но это для каких-то очень сложных инпутов
Я для мелких и средних проектов всегда использовала тот подход, который я уже описала и скинула псевдокод

Admin
ERROR: S client not available

zinge
25.05.2018
04:57:37

ed
25.05.2018
04:57:45
забавно выходит, 2 пути у каждого свои недостатки и плюсы)

Margarita
25.05.2018
04:57:49
Все норм работало и потом ничего не отваливалось и багов тоже не было
А если хочется валидировать при отправке, а не сразу подсвечивать, удобнее, имхо, делать это при сабмите

zinge
25.05.2018
04:58:39

Margarita
25.05.2018
04:58:45
Неа
Парень, по-моему, хочет валидировать при отправке
Чтобы сразу не подсвечивалось

Roman
25.05.2018
04:59:13
$root вообще не реактивен получается?

Google

ed
25.05.2018
04:59:14
в какой момент показывать ошибку это не проблема инута, или формы, это проблема того когда вызывается валидация

Margarita
25.05.2018
04:59:16
Чтобы сразу - я уже предложила решение с директивами☺

ed
25.05.2018
04:59:42

Margarita
25.05.2018
05:00:00

zinge
25.05.2018
05:00:16

ed
25.05.2018
05:00:34

Margarita
25.05.2018
05:00:54

ed
25.05.2018
05:01:00
типо с параметром no-validate, или наоборот по действию в стороннем компоненте (где-то рядом) может быть вызвана валидация типо "проверить мои данные"

Margarita
25.05.2018
05:01:05
Если у нас нет задачи сразу подсвечивать
Ну в общем все зависит от конкретной реализации
Вообще необязательно инпуту уметь самому подсвечивать
Смотря что вы кодите вообще.
Я написала несколько проектов, где мне требовалось в конце на сабмите или отправить данные, или вывести сообщение, что данные фиговые :)
Если кейс такой - то куда удобнее валидировать на сабмите
Если кейс сразу подсвечивать - то мне лично в этом вопросе импонируют директивы )))

zinge
25.05.2018
05:05:44
А зачем?
Мы говорим про dumb инпут валидацию? Или форм ин компонент валидацию?

Margarita
25.05.2018
05:06:07

zinge
25.05.2018
05:07:12
Форм ин, по-моему?
Потому что если dumb инпут то он должен известить родителя об ошибке чтобы уже родитель принял решение что делать дальше.

Margarita
25.05.2018
05:07:42

ed
25.05.2018
05:10:22
Ну, да
то есть сама валидация все же происходит на уровне инпута)
кстати, возможность лайв-валидации можно как раз передать через директиву