Как найти / отфильтровать состояние от реактивного редукса - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь найти данные из mapStateToProps с передачей параметров.

const mapStateToProps = (state, props) => {
const categoryId = props.match.params.id;
return {
    category: state.categories.find((item) => item.id === categoryId)
   };
};

export default connect(mapStateToProps)(categoryForm);

Когда я пытаюсь (item.id === 1), я получаю данные категории, но когда я пытаюсь (item.id === categoryId) данные категории не определены.И я пытаюсь утешить categoryId, все в порядке, я получаю идентификатор из params, но почему он не работает, когда я пытаюсь так (item.id === categoryId)?

categoryAction.js

import api from '../api';
import { FETCH_CATEGORIES } from '../types';

export function setCategories(categories){
return {
    type: FETCH_CATEGORIES,
    categories
  }
}

export const fecthCategory = () => dispatch => 
    api.category.getCategories().then(categories => 
    dispatch(setCategories(categories)))

categoryReducer.js

import { FETCH_CATEGORIES } from '../types';

export default function categories(state = [], action ={}){
switch(action.type){
    case FETCH_CATEGORIES:
        return action.categories;
    default: return state;
  }
}

rootReducers.js

import { combineReducers } from 'redux';
import categories from './reducers/categoryReducer.js';

export default combineReducers({ 
     categories
});

1 Ответ

0 голосов
/ 20 ноября 2018

Я думаю, categoryId - строка, и вы используете строгое равенство === для сравнения.Попробуйте state.categories.find((item) => item.id === Number(categoryId)).Надеюсь, это поможет.

...