@react_js

Страница 392 из 5115
Anton
17.08.2016
08:26:14
Хотя чего я, всегда же можно проверить

Nikita
17.08.2016
08:26:36
вот даже не знаю(

а кстати у вебпака нельзя настроить preLoader чтобы менял файл?)

Anton
17.08.2016
08:27:14
Ну как дойдут руки - проверю)

Google
Nikita
17.08.2016
08:47:37
народ, а есть хорошие альтернативы react-router под redux?

то есть redux-router, например?

Brs
17.08.2016
08:48:55
redux-router это же обвязка над react-router

Nikita
17.08.2016
08:50:06
да, ща в доки полез - так и есть. Я могу задачу описать. У меня админка, для коллекций хочется query-параметры синкать с фильтром. А для роутов вроде /users/:id/edit максимально прозрачно фетчить данные

react-router-redux какую-то чушь делает, в редьюсер кладет стейт history. То есть из pathname самому надо параметры доставать

Vladimir
17.08.2016
09:05:50
у меня react-router-redux, в стор не обязательно лезть, он пробрасывает в пропсы контейнера обьект, в котором есть location и в нем query - собственно query параметры урла

accounts?page=60&per_page=10&sortOrder=asc constructor(params) { super(params); console.log(params.location.query); } == page:"60" per_page:"10" sortOrder:"asc"

Brs
17.08.2016
09:11:34
обычный роутер тоже пробрасывает location, query и params

и еще history и routerContext в context

Nikita
17.08.2016
09:12:15
> А для роутов вроде /users/:id/edit максимально прозрачно фетчить данные В общем это сделал через onEnter, диспатчу экшн. Не знаю на сколько правильно, но работает

Vladimir
17.08.2016
09:18:13
на onEnter фетчитшь данные?

Олег
17.08.2016
09:22:47
вообще то все actions вешают на component will mount

Brs
17.08.2016
09:26:16
в ридми реакт роутера предлагают фетчить данные в componentDidMount

Google
Vladimir
17.08.2016
09:26:40
ну, все или не все, но инициализационный фетч я вешаю в did mount

Nikita
17.08.2016
09:26:53
ну пускай расскажут, что мне делать, если /users/123 -> /users/456 происходит)

cWRP и сравнивать?) не, спасибо

Vladimir
17.08.2016
09:27:17
на то он и компонент, не гоже ему фетчить данные за пределами )

у тебя есть componentWillReceiveProps

там диспатчишь акшин для нового айди

Nikita
17.08.2016
09:28:10
вот я и говорю, зачем мне его сравнивать?)

Vladimir
17.08.2016
09:29:52
хотябы для того, чтобы был полноценный компонент, завтра поменяешь роутер, и все поломается

Nikita
17.08.2016
09:30:19
не вижу взаимосвязи, если честно

и завтра роутер поменяешь - это как "завтра с postgresql на mysql пересядешь, и что с jsonb делать?"

Vladimir
17.08.2016
09:33:45
ну, это как один из примеров, что первое в голову пришло ) Но вообще как по мне роутер не предназначен для фетча данных для компонента

Nikita
17.08.2016
09:35:50
по мне так это открытый вопрос)

Vladimir
17.08.2016
09:41:41
ну хз-хз, интересно посмотреть на приложение, в котором для одних роутов данные фетчатся в рутовом компоненте в роуте, для других в контейнерах на didMount и тд, каша еще та будет, особенно если нужно зареюзать компоненты в других местах

а если у вас не 3-4 роута, а 10-20? рутовой компонент превратится в треш

Vladimir
17.08.2016
09:43:10
программирование не терпит сослагательных наклонений

Vladimir
17.08.2016
09:46:02
а?

Nikita
17.08.2016
09:56:35
эм, а при чем тут вообще рутовый компонент?

Vladimir
17.08.2016
09:58:31
Где роуты описаны?

Petr
17.08.2016
09:58:43
https://mobile.twitter.com/dan_abramov/status/727291046619680770

Nikita
17.08.2016
09:59:11
а какая разница?) пока в 1 файле, будет 20 роутов и это будет проблемой - в разные разнесу

Google
Anton
17.08.2016
10:34:22
Я чот даун и не пойму

Юзаю redux-thunk

До этого использовал структуру import api from 'axios' ... api.post('/test').then(....)

Сделал прослойку в сторе: import api from './helpers/api' applyMiddleware(thunk.withExtraArgument(api)),

Если делаю содержимое helpers.api export default axios.create({..}) то все работает, но мне туда нужно передавать стейт

И при структуре хелпера export default (data) => { return axios.create({..}) } получаю ошибку api.post not defined

api(data).post('/') так тоже не работает

Короче как передавать правильно данные в экстра аргументы redux-thunk'а, есть примеры?

Leonid
17.08.2016
10:42:31
api(data).post('/') так тоже не работает
этот вариант должен работать, где-то в другом месте смотри, если не пашет

Vladimir
17.08.2016
10:43:23
о, я делаю это так

function getUsers(){ return this.get('/users'); } function myAction(){ return (dispatch, getState, {api})=> api::getUsers().then(res=>dispatch...) }

Anton
17.08.2016
11:01:41
эм

Anton
17.08.2016
11:01:51
Я чет разрыв шаблона получил

Пришел с магазина, запустил и все работает

какого черта

Alex
17.08.2016
11:02:26
ПОпробуйте выключить и включить, ага. Часто помогает кстати, изза всяких кешей.

Lupsick
17.08.2016
11:21:22
ангулар должен умереть

столько оверхеада

Evgeny
17.08.2016
11:21:54
Все бомбит?

Алексей
17.08.2016
11:22:36
Правильно я тоже считаю что ангуляр должен умереть! Вместо него нужно использовать Angular 2

Google
Lupsick
17.08.2016
11:23:04
Anton
17.08.2016
11:29:20
ангуляр умер, да здравствует ангуляр (2)

Vladimir
17.08.2016
11:36:04
а анг2 можно запустить без часовой настройки тайпскрипта?

типа как первый - вставил скрипт на страницу и полетели?

мне внезапно понравился Vue для маленькой лабуды всякой

Admin
ERROR: S client not available

Evgeny
17.08.2016
11:37:07
Я имею в виду ТЫ РЕАЛЬНО ВЕРИШЬ, ЧТО АНГУЛАР МОЖНО ЗАПУСТИТЬ ЗА 5 МИНУТ?

Vladimir
17.08.2016
11:38:18
я вот и спрашиваю, можно ли:)

Anton
17.08.2016
11:42:34
ну если какой-нибудь стартер кит юзать

blkmrkt
17.08.2016
11:42:43
вопрос про MobX: вот деляю я интернет-шоп с тыщами продуктов, и хочу кешировать эти продукты по SKU в объекте стейта. Проблема с геттер ф-ей, делаю вот так вот, но mobx ругается что нельзя изменять стейт во время evaluation, что вроде бы и правильно, но не знаю как обойти. На №19 линии я делаю что-то не так

окей понял, внутри рендера этого нельзя делать

Denis
17.08.2016
13:01:09
здарова вопрос по fetch и es6 промисам хочу вызывать массив fetch запросов последовательно для этого соединяю цепочку вызовов в reduce export const callPromisesInSeries = (list) => { var p = Promise.resolve(); return list.reduce((pacc, fn) => { return pacc = pacc.then(fn) }, p); } оно работает, но в конечном итоге возвращает респонс только последнего запроса мне же надо в конечном итоге получить ответы всех запросов, в том числе если какие-то зареджектились, продолжить отправление следующего но в результате получить ответы всех, и удачных запросов и зареджершных догадываюсь что перед каждым последующим запросом нужно в промис передавать ответ предыдущих через Promise.all([]), но пока еще играюсь с синтаксисом мб кто-то уже делал такое и скинет правильный вариант?

Vladimir
17.08.2016
13:02:41
promise.all не твоё

KlonD90
17.08.2016
13:04:58
ну вообще если ты делаешь chain то это не совсем правильно. первый же reject прервет его

Alexander
17.08.2016
13:06:20
@blkmrkt а что за шрифт? Что-то знакомое, но никак не могу вспомнить...

KlonD90
17.08.2016
13:06:55
тебе нужно в then передавать и то и другое в этом случае и копить результаты в некий агрегатор

Alexander
17.08.2016
13:07:11
Спасибо! Оказывается, что-то новое

KlonD90
17.08.2016
13:07:15
а этот агрегатор как раз вернуть как результат

Google
KlonD90
17.08.2016
13:08:31
в then ты сейчас передаешь только обработчик для resolve а тебе нужен обработчик и для reject

Denis
17.08.2016
13:09:02
именно под этим агрегатором я подразумевал Promise.all([]) как вот тут в последнем примере 2го раздела http://www.datchley.name/promise-patterns-anti-patterns/

KlonD90
17.08.2016
13:09:24
Promise.all делает это в паралель же

а ты ходишь последовательно нет?

Denis
17.08.2016
13:10:05
promise.all не должен заменить reduce он должен запоминать значения предыдущих вызовов

firstThingAsync() .then(function(result1) { return Promise.all([result1, secondThingAsync(result1)]); }) .then(function(results) { // do something with results array: results[0], results[1] }) .catch(function(err){ /* ... */ });

пример с того сайта

KlonD90
17.08.2016
13:12:19
не то чтобы я такой подход не использовал - но это больше подходит под конкретный случай типа ты в первой асинхронной штуки все таки что-то делаешь тогда, а в общем случае хз стоит ли хотя в принципе под идеологию коммуникации подходит

Denis
17.08.2016
13:15:59
в скайповском реакт чате сбросили https://goo.gl/LJaLqt

Vladimir
17.08.2016
13:27:20
хорошее решение

Ҫѐҏӗѫӑ
17.08.2016
14:05:02
можно и параллельно const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = Promise.reject(3); const promise4 = Promise.resolve(4); const promises = [promise1, promise2, promise3, promise4]; Promise.all(promises.map(p => p.catch(_=>_))).then(console.log.bind(console));

Nikita
17.08.2016
14:13:04
жалко нет модульного bluebird)

Ҫѐҏӗѫӑ
17.08.2016
14:14:31
есть пропозалы с полифиллами для Promise.finally и Promise.try

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