@react_js

Страница 442 из 5115
Алексей
05.09.2016
08:29:25
окей.... продолжайте дальше в том же духе.
дело вкуса же, в чем проблема то?

Andrey
05.09.2016
08:30:21
проблема будет еще в дев тулсе браузера, там будет куча IfTrue

Алексей
05.09.2016
08:31:16
проблема будет еще в дев тулсе браузера, там будет куча IfTrue
в том же девтулзе есть поиск, и когда у тебя огромный проект на эти IfTrue особо внимание не обращаешь

Mikhail
05.09.2016
09:26:50
Скажите, что нынче заюзать для анимации в реакте? react-motion?

Google
Mikhail
05.09.2016
09:30:25
Или react-addons-css-transition-group? Ничто не старьё, все актуально?

Dmitry
05.09.2016
09:31:26
:)

https://github.com/brillout/awesome-react-components#ui-animation

Evgeny
05.09.2016
09:33:00
Кажется сам разобрался, удалил

roma
05.09.2016
09:34:42
метод утенка решает

Evgeny
05.09.2016
09:34:54
Шаришь

Ches
05.09.2016
09:36:55
подскажите что значит call PropTypes directly

что то из доков не понял

угу

Ҫѐҏӗѫӑ
05.09.2016
10:23:09
начали продавать билеты на реакт европ 2017

Михаил
05.09.2016
10:26:28
а можно как-то сделать в css-modules чтобы в <div class="table__table___32osj"> <div class="table__row___2w27N"> <div class="table__cell___1oVw5">A0</div> <div class="table__cell___1oVw5">B0</div> </div> </div> корневой элемент получал только имя файла (либо только имя локального селектора)?

чтобы было просто table__32osj

Google
hlomzik
05.09.2016
10:27:59
чтобы было просто table__32osj
но зачем? это вообще служебные имена

Михаил
05.09.2016
10:28:38
чтобы красиво было, и только

hlomzik
05.09.2016
10:28:47
+ проблемы с определением “корневого элемента”

Kreizo
05.09.2016
10:37:52
ребят подскажите какую то либу к реакту

вместо редакса

для MVC

Кисик
05.09.2016
10:38:13
mobx?

Ostap
05.09.2016
10:38:19
+

Dmitriy
05.09.2016
11:02:39
как заставить компонент перехватывать keyDown во всем окне, независимо от фокуса в этом компоненте?

Dmitry
05.09.2016
11:03:33
window.addEventListener

Dmitriy
05.09.2016
11:04:10
а это нормально лезть в window из компонента

?

Dmitry
05.09.2016
11:05:10
Да, при маунте добавляешь, при анмаунте удаляешь

Bogdan
05.09.2016
11:18:23
А что вы используете для ajax запросов?
файлик из 60 строчек кода который копирую из проекта в проект function request(method, path, query, body, headers, upload, download){ return new Promise((resolve, reject)=>{ var xhr = new XMLHttpRequest(); var url = path + (query && Object.keys(query).length ? ('?'+qs.stringify(query)) : ''); xhr.open(method, url); xhr.setRequestHeader('Accept', 'application/json'); var bodyString; if (method !== "GET" && body) { if (body instanceof Blob) { bodyString = body; } else { bodyString = JSON.stringify(body); xhr.setRequestHeader('Content-Type', 'application/json'); } } if(headers) { for (var header in headers) { xhr.setRequestHeader(header, headers[header]) } } if(upload){ xhr.upload.onprogress = function(event) { var percent = Math.floor((event.loaded / event.total) * 100); upload(percent, event.loaded, event.total); }; } if(download){ xhr.onprogress = function(event) { var percent = Math.floor((event.loaded / event.total) * 100); download(percent, event.loaded, event.total); } } xhr.onload = xhr.onerror = function() { try { var receivedData = JSON.parse(this.responseText); } catch(e){ reject('wrong json response', this.responseText); } if (this.status >= 200 && this.status <= 299) { resolve(receivedData) } else { reject(receivedData) } }; xhr.send(bodyString); }) } request.get = request.bind(null, "GET"); request.post = request.bind(null, "POST"); request.put = request.bind(null, "PUT"); request.delete = request.bind(null, "DELETE");

Алексей
05.09.2016
11:19:20
файлик из 60 строчек кода который копирую из проекта в проект function request(method, path, query, body, headers, upload, download){ return new Promise((resolve, reject)=>{ var xhr = new XMLHttpRequest(); var url = path + (query && Object.keys(query).length ? ('?'+qs.stringify(query)) : ''); xhr.open(method, url); xhr.setRequestHeader('Accept', 'application/json'); var bodyString; if (method !== "GET" && body) { if (body instanceof Blob) { bodyString = body; } else { bodyString = JSON.stringify(body); xhr.setRequestHeader('Content-Type', 'application/json'); } } if(headers) { for (var header in headers) { xhr.setRequestHeader(header, headers[header]) } } if(upload){ xhr.upload.onprogress = function(event) { var percent = Math.floor((event.loaded / event.total) * 100); upload(percent, event.loaded, event.total); }; } if(download){ xhr.onprogress = function(event) { var percent = Math.floor((event.loaded / event.total) * 100); download(percent, event.loaded, event.total); } } xhr.onload = xhr.onerror = function() { try { var receivedData = JSON.parse(this.responseText); } catch(e){ reject('wrong json response', this.responseText); } if (this.status >= 200 && this.status <= 299) { resolve(receivedData) } else { reject(receivedData) } }; xhr.send(bodyString); }) } request.get = request.bind(null, "GET"); request.post = request.bind(null, "POST"); request.put = request.bind(null, "PUT"); request.delete = request.bind(null, "DELETE");
npm не вариант? :)

Vladimir
05.09.2016
11:20:01
файлик из 60 строчек кода который копирую из проекта в проект function request(method, path, query, body, headers, upload, download){ return new Promise((resolve, reject)=>{ var xhr = new XMLHttpRequest(); var url = path + (query && Object.keys(query).length ? ('?'+qs.stringify(query)) : ''); xhr.open(method, url); xhr.setRequestHeader('Accept', 'application/json'); var bodyString; if (method !== "GET" && body) { if (body instanceof Blob) { bodyString = body; } else { bodyString = JSON.stringify(body); xhr.setRequestHeader('Content-Type', 'application/json'); } } if(headers) { for (var header in headers) { xhr.setRequestHeader(header, headers[header]) } } if(upload){ xhr.upload.onprogress = function(event) { var percent = Math.floor((event.loaded / event.total) * 100); upload(percent, event.loaded, event.total); }; } if(download){ xhr.onprogress = function(event) { var percent = Math.floor((event.loaded / event.total) * 100); download(percent, event.loaded, event.total); } } xhr.onload = xhr.onerror = function() { try { var receivedData = JSON.parse(this.responseText); } catch(e){ reject('wrong json response', this.responseText); } if (this.status >= 200 && this.status <= 299) { resolve(receivedData) } else { reject(receivedData) } }; xhr.send(bodyString); }) } request.get = request.bind(null, "GET"); request.post = request.bind(null, "POST"); request.put = request.bind(null, "PUT"); request.delete = request.bind(null, "DELETE");
уж лучше fetch

Evgeny
05.09.2016
11:20:06
https://github.com/jqestate/http.js

Google
Anton
05.09.2016
11:20:28
Evgeny
05.09.2016
11:20:32
Чем лучше

Anton
05.09.2016
11:20:37
или axios

Alxander
05.09.2016
11:20:44
fetch довольно геморройный.

Vladimir
05.09.2016
11:20:50
чем?

Alxander
05.09.2016
11:22:38
Параметры прописать всякие, чтобы куки слались, response.json(), ошибки ловить (503 по умолчанию в catch не падает по понятным причинам). Всё равно обвязку писать придётся, чтобы простое обращение за json'кой не занимало десятки строк.

Bogdan
05.09.2016
11:30:06
npm не вариант? :)
я просто не любитель раздувать зависимости. Можно конечно вынести этот код в свой пакет, но мне кажется посмотреть другому человеку 60 строчек кода в папке utils быстрее чем идти в package.json потом на сайт npm, потом на гитхаб и там смотреть исходники

Alxander
05.09.2016
11:34:45
Ну так всё равно велосипед писать придётся, не будешь же ты каждый раз прописывать параметры авторизации, хедеры нужные и т.д.

Vladimir
05.09.2016
11:35:21
это уже app-специфик имплементация

это норм

Ҫѐҏӗѫӑ
05.09.2016
11:36:08
он ужасен

Alxander
05.09.2016
11:36:39
это уже app-специфик имплементация
Ну там уже не сильно важно, что под капотом, хоть $.ajax

Vitaliy
05.09.2016
11:36:45
он ужасен
а более аргументированно?

Alxander
05.09.2016
11:36:48
Хотя fetch лучше, конечно.

Konstantin
05.09.2016
11:37:37
а более аргументированно?
Экшены не синхронные

Google
Ҫѐҏӗѫӑ
05.09.2016
11:37:57
а более аргументированно?
там дебильное апи с несколькими вариантами сделать одно и то же, ничего нет для работы с зависимыми сторами

Admin
ERROR: S client not available

Nikita
05.09.2016
11:40:07
вообще несколько сторов - это отвратительно) нужен 1 стейт, иначе нереально дебажить

Ҫѐҏӗѫӑ
05.09.2016
11:40:16
тем, что есть соблазн написать все по-разному, в итоге это неудобно поддерживать, применять инструментарий для рефакторинга, растет энтропия, надо зачем-то знать все эти варианты

Nikita
05.09.2016
11:40:21
ну может для оптимизаций 2-3, но это прям если сильно припечет

Nikita
05.09.2016
11:40:45
я по опыту работы с flux говорю. Который фейсбучный

Ҫѐҏӗѫӑ
05.09.2016
11:41:12
я говорю по своему опыту, что иногда наличие нескольких сторов оправдано

про это есть ишью на гх в реакт репе

там тоже норм кейсы

или в редаксе наверное, не в реакте

Victor
05.09.2016
11:42:02
а чем реализация разными вариантами плоха?
А чем вы тестируете приложение на Reflux?

Nikita
05.09.2016
11:43:03
я говорю по своему опыту, что иногда наличие нескольких сторов оправдано
а, тут я не спорю. Но это прямо таки определенные кейсы. Я про flux-подобные решения, где каждый редьюсер (в концепции редакса) - отдельный стор

Vitaliy
05.09.2016
11:43:59
А чем вы тестируете приложение на Reflux?
на моке, а так же у нас selenium

Bogdan
05.09.2016
11:44:56
> Paul Klimashkin [5/22/16] mobx можно не использовать не потому что он новый, а потому что это старые грабли В старых добрых обзерверах и копьютедах. С ростом проекта будет расти кол-во кроссзависимых обзерверов, обновления будут выстреливать в разные стороны как феерверк, что усложняет отладку и приводит к неочевыдным багам или к циклическим зависимостям, которые сложно распутать или найти точку прекращения распространения обновлений А может кто-то объяснить в чем проблема роста кроссзависимых обзерверов? Эти больше по технической части mobx (типа будет тормозить в отличии от редакса) или может какая-то тема архитектуры (типа нет контейнеров и нужно передавать все через пропсы)

Vitaliy
05.09.2016
11:45:09
вообще несколько сторов - это отвратительно) нужен 1 стейт, иначе нереально дебажить
нуну... при огромной аппликухе я посмотрю - как вы это сделаете. что проще - искать что то маленькое в огромном или в какой то отдельной части

Victor
05.09.2016
11:45:26
на моке, а так же у нас selenium
А в сторе все функции чистые? У меня имеется проблема, что в сторе куча зависимостей в функциях.

Vitaliy
05.09.2016
11:46:49
огромная - это как определить?
это когда апп имеет порядка 30 уникальных по логике секций (модулей) и каждый модуль может имеет еще разный функционал и требует сохранения данных

Google
Vitaliy
05.09.2016
11:47:50
А в сторе все функции чистые? У меня имеется проблема, что в сторе куча зависимостей в функциях.
да. ну а зависимости нужно решать каким то уровнем выше, либр экшенами

ну либо уносить на уровень каких то утилит

Victor
05.09.2016
11:50:00
Konstantin
05.09.2016
11:51:47
Vitaliy
05.09.2016
11:52:56
А state храните как свойство стора?
стейт чего? у нас огромное кол-во форм, умных и глупых компонентов

Victor
05.09.2016
11:56:26
стейт чего? у нас огромное кол-во форм, умных и глупых компонентов
Стейт одного из "контейнеров". Доступ из методов стора к стейт как осуществляется, как this.state или как-то передаётся через параметры?

Dmitry
05.09.2016
11:57:31
Ҫѐҏӗѫӑ
05.09.2016
11:58:15
у меня много проектов. везде по-разному. и везде разные flux-like либы

Victor
05.09.2016
12:19:38
да, через параметры
А как это организовано? В примерах, которые я сморел, доступ осуществляется через this.state

Vitaliy
05.09.2016
12:29:03
А как это организовано? В примерах, которые я сморел, доступ осуществляется через this.state
подключаешь на страницу стор. при необходимости дергаешь какие то его методы, передавая их параметры (возможно что то из стейта)

Victor
05.09.2016
13:03:54
подключаешь на страницу стор. при необходимости дергаешь какие то его методы, передавая их параметры (возможно что то из стейта)
А в store.trigger же нужно целиком state передавать. Если мы не целиком в метод стейт передали, что тогда? Или нужно при каждом вызове весь стейт передавать обязательно?

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