@react_js

Страница 4068 из 5115
Anton
03.06.2018
07:42:35
^ табы на powerplug

Roman
03.06.2018
07:51:44
у авито крутая дока блин)) где взять))) styleguidist шляпа по сравнению с ними

Google
Dimanius851
03.06.2018
08:48:25
а может быть такое что если в объекте стейта обновляется только объект в его глубине, то стейт не обновляется? что делать в таком случае?

еще раз?

что то мелькнуло

Cenator
03.06.2018
08:50:28
Спам был

Dimanius851
03.06.2018
08:50:35
а

Cenator
03.06.2018
08:53:02
А каким образом?

Dimanius851
03.06.2018
08:53:30
А каким образом?
местами меняются ключи

типа нулевой стал первым, а первый нулевым

Cenator
03.06.2018
08:56:19
местами меняются ключи
Без кода непонятно

Dimanius851
03.06.2018
09:08:43
не знаю, с какой части начинать скидывать код, короче, setState({ clippings }) и стей полностью идентичен прошлому стейт, за исключением того, что два объекта в videosParts поменялись местами, в них ничего не изменилось. А для рендеринга данные просто берутся из стейта: const { clippings } = this.state и дальше рендерятся так: {clippings.map(clip => ( <Route key={clip.key} path={`${match.url}/${clip.key}`} render={() => ( <SingleClip updateVideosParts={this.updateVideosParts} clippingKey={clip.key} videos={clip.videosParts} /> )} /> ))}

Google
Cenator
03.06.2018
09:14:21
Который в setstate

Dimanius851
03.06.2018
09:14:39
А откуда clippings берется
загружается запросом

и при обновлении тоже

хз, в общем я решил, прелоадером, типа если !this.state.loading то рендерить все

а почему не перерендеривается при обновлении стейта - не знаю

Cenator
03.06.2018
09:18:25
а почему не перерендеривается при обновлении стейта - не знаю
можешь весь кусок кода обновления скинуть?

Dimanius851
03.06.2018
09:21:33
componentDidMount = async () => { await this.init() } init = async () => { this.setState({ loading: true }) const clippings = await getClippings() this.setState({ clippings, loading: false, }) } updateVideosParts = async (key, videos) => { await update(key, videos) await this.init() }

Николай
03.06.2018
09:35:01
Народ, использую Flow, есть такой кусок кода: type State = { answerState: "wait" | "wrong" (1) } class MainInput extends Component<Props, State> { ... <div className={this.state.answerState == "WTF" ? ...}> Почему Flow позволяет сравнивать мой answerState со строкой, которая НЕ допустима в описании типа (помеченного в коде пунктом (1)) ?

Vladimir
03.06.2018
09:38:14
Попробуй выделить “wait" | "wrong" в отдельный тип

И потом сравнивай (“WTF”: Type)

Так должно работать/выкидывать ошибку

Николай
03.06.2018
09:41:08
Выделил “wait" | "wrong" в отдельный тип Всё равно можно написать что-то типа this.state.answerState == "wronggggg" и Flow промолчит (просто это выражение всегда будет false)

Как починить Flow?

Andrey
03.06.2018
09:43:26
А почему он тут сломан?

Всё правильно же.

Если хочешь сделать как тебе надо, то сделай функцию typeEqual(T a, T b)

Николай
03.06.2018
09:44:45
Я хочу, что бы Flow говорил, что я сравниваю свой this.state.answerState с недопустимым значением

Andrey
03.06.2018
09:45:03
Смотри решение выше.

Alexander
03.06.2018
09:45:04
в TS работат именно так, как хоче Николай

и это логично

Google
Николай
03.06.2018
09:45:23
Вот, хотелось бы, что б и Flow так делал...

Vladimir
03.06.2018
09:45:53
https://github.com/facebook/flow/issues/2394 Гуглинг выдал это

Прости, брат

Николай
03.06.2018
09:46:32
Качать typescript?

Vladimir
03.06.2018
09:46:38
Как решение, приходил в голову создать джсовый класс enum

И использовать его вместо enum flow

andretshurotshka?❄️кде
03.06.2018
09:47:59
Качать typescript?
пилить пр в флоу)

Николай
03.06.2018
09:48:22
пилить пр в флоу)
это не наш метод

Alexander
03.06.2018
09:52:11


Дмитрий
03.06.2018
09:52:26
Для матчинга энамов есть switch

Николай
03.06.2018
09:52:42
у тебя присваивание, у меня сравнение на ==

Дмитрий
03.06.2018
09:53:13
Кстати тебя не смущает что ты приведение типов юзаешь

Николай
03.06.2018
09:53:51
мне не нужен полноценный матчинг энамов, мне нужно, что бы флоу в простом ифе НЕ позволял сравнивать значение энама с произвольной строкой

Alexander
03.06.2018
09:54:04
у тебя присваивание, у меня сравнение на ==
ааа, ну так правильно, сравнение то с чего должно выбрасывать ошибку

Николай
03.06.2018
09:54:55
ну дык я сравниваю с НЕдопустимым значением (список допустимых значений перечислен в определении типа через вертикальную палку)

Alexander
03.06.2018
09:55:16
но ты же не меняешься значение

Николай
03.06.2018
09:57:07
Меняю, просто то место, где меняю я не вставлял сюда, дабы упростить пример и четче показать саму суть вопроса. Присвоения у меня есть, там флоу отлично работает, не позволяет присвоить то, чего нету в описании типа ( как у тебя на скрине )

Alexander
03.06.2018
09:58:53
ну короче, сравнение разных типов нормальная тема, так же как и во всех типизированных языках

Николай
03.06.2018
10:00:11
this.setState({ answerState: "WTF" // тут флоу выдаст ошибку, всё верно }) if (this.state. answerState == "WTF") // а вот тут не выдаст, что в моем понимании странно Это не сравнение типов, это сравнение двух значений разных (разных!) типов

Google
Alexander
03.06.2018
10:00:27
Нет
ну лан

Дмитрий
03.06.2018
10:02:05
В окамле это было бы предупреждение о non exhaustive match. Правда там для этого юзается switch который спрашивающий уже с негодованием отверг кек

Николай
03.06.2018
10:04:21
Это да, exhaustive switch все дела. Но мне нужен один пройсто if - else. Хочу, что бы в этом простом if-else тоже работал type checking, как и при присвоении, как и при exhaustive switch

Так, похоже typescript тоже пропускает такой код: type State = { answerState: "wait" | "wrong" } this.state.answerState == "WTF" Как я понимаю, использовать алгебраические типы данных в качестве энамов нельзя

Stepan
03.06.2018
10:18:19
Ура, снова нихуя не понятно

Admin
ERROR: S client not available

Stepan
03.06.2018
10:18:21
Я скучал

Муслим
03.06.2018
10:19:13
так надо делать get
Если свойство cookies экземпляра Cookies пусто, то и гет ничего не выведет

Дмитрий
03.06.2018
10:19:23
Во первых у меня смутное подозрение что два равно тут не очень идея)) Во вторых да

Николай
03.06.2018
10:19:55
три знака равно тоже пропустит

Странно это, казалось бы, алгебраические типы только для энамов и использовать...

Дмитрий
03.06.2018
10:20:57
Так, похоже typescript тоже пропускает такой код: type State = { answerState: "wait" | "wrong" } this.state.answerState == "WTF" Как я понимаю, использовать алгебраические типы данных в качестве энамов нельзя
Последние пару месяцев я занимался тем что эмулировал алгебраическую сумму типов в жс, тщательно так, через disjoint Union классы. Потом надоело, теперь такие места пишу не на жс, это довольно не сложно

Danil
03.06.2018
10:25:07
народ, есть чатик по верстке или css?

Danil
03.06.2018
10:25:29
@css_ru
спасибо!

Ruslan
03.06.2018
12:15:56
Всем привет, подскажите пожалуйста, хочу через new FormData() закинуть туда файл и его название, затем отправить в акшен,откуда на сервер, но с поля ничего не считывается совсем, только пустота, вот код fileChange = (event) => { this.setState({file: event.target.files[0]}, console.log(event.target, 'file')) }; bookUpload = () => { const formData = new FormData(); formData.append('file',this.state.file); formData.append('filename',this.state.bookName); const config = { headers: { 'content-type': 'multipart/form-data' } }; console.log(formData, 'data'); this.props.uploadBook(formData, config); };

<input id='book' name='bookUpload' type='file' className='Input' onChange={this.fileChange}/>

Google
Stepan
03.06.2018
12:19:02
Короче, просто убери контент тайп и должно заработать

Ruslan
03.06.2018
12:19:21
хорошо, но проблема даже в том, что в formData ничего не попадает, пусто совсем…

Stepan
03.06.2018
12:20:17
Ты проверял через network

?

Ivan
03.06.2018
12:20:47
console.log не отображает содержимое formData

Ruslan
03.06.2018
12:20:55
аа,так вот в чем дело

Ivan
03.06.2018
12:21:01
только через .get

Ruslan
03.06.2018
12:22:46
Теперь понял, разобрался, спасибо всем

K
03.06.2018
12:31:30
Привет, хэндлинг запросов на апи через фетч должен производиться на уровне компонента, а в редусере чисто манипулировать с уже полученными данными или как?

K
03.06.2018
12:32:13
Ещё не дошел, только вот недавно редукс разбирал

Там я так понял идёт мидлвар для асинхронных компонентов, да?

Cenator
03.06.2018
12:32:43
асинхронных экшен криэйторов

K
03.06.2018
12:33:01
асинхронных экшен криэйторов
именно, экшнов, не то написал.

Ruslan
03.06.2018
12:33:27
только через .get
попробовал, все получилось, буду дальше разбираться с отправкой,спасибо

Cenator
03.06.2018
12:33:35

Страница 4068 из 5115