Я новичок в ReactJS, и недавно я придумал этот редукционный магазин дат, который в основном использует реакции. Я пытаюсь иметь хороший gr asp на нем.
Только для целей понимания, у меня есть Массив объектов, хранящихся в магазине в состоянии c на данный момент.
вот так:
const initialState = {
jsonData: [
{
"id": "1",
"country": "India",
"state": "Andhra_Pradesh",
"city": "Amaravati",
"station": "Secretariat, Amaravati - APPCB",
"last_update": "18-12-2019 09:00:00",
"pollutant_id": "PM2.5",
"pollutant_min": "62",
"pollutant_max": "278",
"pollutant_avg": "139",
"pollutant_unit": "NA"
},
{
"id": "2",
"country": "India",
"state": "Andhra_Pradesh",
"city": "Amaravati",
"station": "Secretariat, Amaravati - APPCB",
"last_update": "18-12-2019 09:00:00",
"pollutant_id": "PM10",
"pollutant_min": "74",
"pollutant_max": "136",
"pollutant_avg": "104",
"pollutant_unit": "NA"
},
{
"id": "149",
"country": "India",
"state": "Delhi",
"city": "Delhi",
"station": "Lodhi Road, Delhi - IMD",
"last_update": "18-12-2019 09:00:00",
"pollutant_id": "NO2",
"pollutant_min": "NA",
"pollutant_max": "NA",
"pollutant_avg": "NA",
"pollutant_unit": "NA"
},
{
"id": "150",
"country": "India",
"state": "Delhi",
"city": "Delhi",
"station": "Lodhi Road, Delhi - IMD",
"last_update": "18-12-2019 09:00:00",
"pollutant_id": "CO",
"pollutant_min": "34",
"pollutant_max": "117",
"pollutant_avg": "57",
"pollutant_unit": "NA"
},
]
Я пытаюсь создать действие вот так:
{
type: "SEARCH",
payload: {
pattern: 'Mah'
}
}
и отправляю это действие. и пытается отфильтровать магазин на основе шаблона. Я беру образец и преобразовываю его как RegExp. и использование тестовой функции для фильтрации данных.
Но почему-то это не работает, данные не фильтруются с помощью RegExp. Я получаю то же состояние даже после фильтрации данных. Я не могу понять, в чем проблема:
Вот полный код:
import React from 'react';
import ReactDOM from 'react-dom';
import { createStore } from 'redux';
import { Provider } from 'react-redux';
import App from './App';
import './index.css';
const initialState = {
jsonData: [
{
"id": "1",
"country": "India",
"state": "Andhra_Pradesh",
"city": "Amaravati",
"station": "Secretariat, Amaravati - APPCB",
"last_update": "18-12-2019 09:00:00",
"pollutant_id": "PM2.5",
"pollutant_min": "62",
"pollutant_max": "278",
"pollutant_avg": "139",
"pollutant_unit": "NA"
},
{
"id": "2",
"country": "India",
"state": "Andhra_Pradesh",
"city": "Amaravati",
"station": "Secretariat, Amaravati - APPCB",
"last_update": "18-12-2019 09:00:00",
"pollutant_id": "PM10",
"pollutant_min": "74",
"pollutant_max": "136",
"pollutant_avg": "104",
"pollutant_unit": "NA"
},
{
"id": "149",
"country": "India",
"state": "Delhi",
"city": "Delhi",
"station": "Lodhi Road, Delhi - IMD",
"last_update": "18-12-2019 09:00:00",
"pollutant_id": "NO2",
"pollutant_min": "NA",
"pollutant_max": "NA",
"pollutant_avg": "NA",
"pollutant_unit": "NA"
},
{
"id": "150",
"country": "India",
"state": "Delhi",
"city": "Delhi",
"station": "Lodhi Road, Delhi - IMD",
"last_update": "18-12-2019 09:00:00",
"pollutant_id": "CO",
"pollutant_min": "34",
"pollutant_max": "117",
"pollutant_avg": "57",
"pollutant_unit": "NA"
},
]
};
function reducer(state = initialState, action) {
console.log('reducer', state, action);
switch(action.type) {
case 'SEARCH':
const updatedPattern = new RegExp(action.payload.pattern)
return {
jsonData: initialState.jsonData.filter(item => updatedPattern.test(item.state))
};
default:
return state;
}
}
function getState() {
console.log(initialState.jsonData);
}
const store = createStore(reducer);
store.dispatch(
{
type: "SEARCH",
payload: {
pattern: 'And'
}
}
);
getState();
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>
,
document.getElementById('root')
);