@vuejs_ru

Страница 2968 из 3900
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
Во вью же вроде директивы есть, чтобы валидировать всякое

Я точно не помню

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
но, я не понимаю как это организовывается нормально на вью
Сабмит. Чек ин фор всех полей. Если шляпа стопим сабмит. Подсвечиваем поле. Кастомная штука. Делается за час максимум

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

Сабмит. Чек ин фор всех полей. Если шляпа стопим сабмит. Подсвечиваем поле. Кастомная штука. Делается за час максимум
в продакшен сделанную за час никто не путстит, нужны еще тесты, и нормальный код (расширяемость) и пр. чтобы это работало для всего проекта

Margarita
25.05.2018
04:45:16
в любом случае я прихожу к обхолду дочерних компонентов
У тебя данные (что там лежит, в дочерних элементах) могут храниться в самой форме

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
типо {name:['isRequired'], email:['isEmail']}
Ну validate props array isNotRequired я бы передавал.

ed
25.05.2018
04:50:12
Ну validate props array isNotRequired я бы передавал.
то есть в результате что-то такое? <v-form :onSubmit="handleSubmit" :validators={{name: ['isRequired'], email:['isEmail']}}> <v-input type="text" name="name"/> <v-input type="text" name="email"/> </v-form>

zinge
25.05.2018
04:51:40
то есть в результате что-то такое? <v-form :onSubmit="handleSubmit" :validators={{name: ['isRequired'], email:['isEmail']}}> <v-input type="text" name="name"/> <v-input type="text" name="email"/> </v-form>
Ну вот тут тоже грабли.М ожет возникнуть ситуация захотеть валидировать не поля. А всю форму.

Margarita
25.05.2018
04:52:09
Я обычно так задачи вроде твоей решаю

Может быть, пригодится

ed
25.05.2018
04:52:48
Ну вот тут тоже грабли.М ожет возникнуть ситуация захотеть валидировать не поля. А всю форму.
это не будет работать еще потому, что валидация инпута - это проблема инпута и никто не должен знать как он там валидируется, и ошибка в итоге должна отобразиться внутри инпута (а что если это выпадающий календарь на несколько месяцев где ошибку надо показать над определенной датой)

Margarita спасибо

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

Margarita
25.05.2018
04:54:24
Это в реакте. А во вью данные инпута лежат в форме
Могут лежать в форме, я хотела сказать. Необязательно это. Но обычно работает.

ed
25.05.2018
04:55:06
Могут лежать в форме, я хотела сказать. Необязательно это. Но обычно работает.
ну, это не меняет того, что компонент инпута может быть очень большим и сложным (как мой пример с календарем) и его валидация тоже будет очень массивна, и, выносить это на уровень формы - странно (как минимум мне, сори я из мира реакта)

и рендер ошибки

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
Плят. this.$root и this.$parent уже сколько раз говорили плохая идея использовать.
я в курсе, но мне не нужен в данном случае целый Vuex, приложение мизерное

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
Чтобы сразу - я уже предложила решение с директивами☺
спасибо за активность, как раз выбираю как что лучше)

zinge
25.05.2018
05:00:16
Парень, по-моему, хочет валидировать при отправке
Валидатор может вернуть тру/фолс для последующей обработке в родителе. Но фиелд подсветить с ошибкой валидации компонент должен уметь сам. Нет?

ed
25.05.2018
05:00:34
То есть сабмита☺
сабмит может быть и без валидации

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

Margarita
25.05.2018
05:01:05
Если у нас нет задачи сразу подсвечивать

Ну в общем все зависит от конкретной реализации

Вообще необязательно инпуту уметь самому подсвечивать

Смотря что вы кодите вообще.

Я написала несколько проектов, где мне требовалось в конце на сабмите или отправить данные, или вывести сообщение, что данные фиговые :)

Если кейс такой - то куда удобнее валидировать на сабмите

Если кейс сразу подсвечивать - то мне лично в этом вопросе импонируют директивы )))

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

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

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

кстати, возможность лайв-валидации можно как раз передать через директиву

Страница 2968 из 3900