Доступ к нормализованным данным в редукторе - PullRequest
0 голосов
/ 08 января 2019

Данные, возвращаемые бэкэндом, выглядят следующим образом.

[
          {
            id: 1,
            address: '991 Folsom St, San Francisco, CA 94107, USA',
            info: 'Triplex 4,000 sqft',
            cap: '7.1',
            position: { lat: 37.778519, lng: -122.405640 }
          },
          {
            id: 2,
            address: '1139004, San Francisco, CA 94118, USA',
            info: 'Duplex 1,500 sqft',
            cap: '6.8',
            position: { lat: 37.768519, lng: -122.435640 }
          }
        ]

Код реагирования для нормализации данных выглядит следующим образом.

import axios from '../../../util/axios';
import * as schema from '../../../schema';
import { normalize } from 'normalizr';

const normalizePropertyList = response => normalize(response.data.listings_by_id, [schema.propertyList]);

export const getPropertyList = () => axios.get('/api/v1/properties').then(normalizePropertyList);

Схема определяется следующим образом.

import { normalize, schema } from 'normalizr';

export const propertyList = new schema.Entity('listings_by_id', {}, { idAttribute: 'id' });

Возвращены нормализованные данные следующим образом.

{
  "entities": {
    "listings_by_id": {
      "1": {
        "id": 1,
        "address": "991 Folsom St, San Francisco, CA 94107, USA",
        "info": "Triplex 4,000 sqft",
        "cap": "7.1",
        "position": {
          "lat": 37.778519,
          "lng": -122.40564
        }
      },
      "2": {
        "id": 2,
        "address": "1139004, San Francisco, CA 94118, USA",
        "info": "Duplex 1,500 sqft",
        "cap": "6.8",
        "position": {
          "lat": 37.768519,
          "lng": -122.43564
        }
      }
    }
  },
  "result": [
    1,
    2
  ]
}

Теперь в редукторе мне нужно получить доступ к этим данным с помощью селекторов. Я немного запутался, как это реализовать.

Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...