2016-03-15 1 views
1

я изучаю flux-react-router-example по @Dan Абрамов, я замечаю в Fetch коды API here: Выборки API имеет обратный посыл, который имеет вложенное возвращение внутри:Javascript API получать в реакцию потока

return fetch(url).then(response => 
response.json().then(json => { 
    const camelizedJson = camelizeKeys(json); 
    const nextPageUrl = getNextPageUrl(response) || undefined; 

    return { 
    ...normalize(camelizedJson, schema), 
    nextPageUrl 
    }; 
}) 

);

Я смущен этим вложенным возвратом, почему это используется здесь? Почему бы просто не вернуть response.json()?

Кажется, если я делаю то же самое, я получу неопределенное значение

ответ

2

JSON извлекается из ответа является

  1. преобразуется в верблюжий используя humps
  2. ун-вложенный с использованием normalizr для более легкая обработка в сочетании с магазином redux
  3. , обогащенный следующей страницей url, проанализирован от link заголовок

Больше обсуждений и рассуждений о том, почему хранение вложенных объектов ответа в хранилище обычно является плохой идеей, можно найти на React JS Google Group.

+0

спасибо за ваш ответ, мне действительно интересно, как работает оператор return в response.json(). Из того, что я понимаю, это создаст неопределенное значение при использовании за пределами – Chrim

+1

. Запрос выполняется с использованием gifubs [fetch] (https://github.com/github/fetch) polyfill, который основан на [полиполняемых частях] (http : //github.github.io/fetch/) спецификаций whatwg fetch. методы тела, такие как 'text()' и 'json()' return обещания, дающие результаты, которые затем могут быть скованы при использовании стандартной цепи обещаний - вот что происходит в этом примере. длинный рассказ короткий: возвращаемое значение вызова 'json()' является обещанием. – Codepunkt

Смежные вопросы