Данные, возвращаемые бэкэндом, выглядят следующим образом.
[
{
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
]
}
Теперь в редукторе мне нужно получить доступ к этим данным с помощью селекторов. Я немного запутался, как это реализовать.
Любая помощь будет оценена.