mercury
mercury

Reputation: 2755

React Redux State Object properties

I wonder why my state todos named todo not todos in the redux dev tools .. From where that name came ? There is no initial state .. i wonder..

I'm following Stephen Grider udemy course but with todos instead of streams as a revision

why i have to return it by state.todo not state.todos??

My github Repo

Jsson server db.json file ( api file )


        {
      "todos": [
        {
          "title": "lorem ipsum ",
          "description": "lorem ipsum",
          "id": 4
        }
      ]
    }

todoReducer.js


        import _ from 'lodash';
    import {
      CREATE_TODO,
      EDIT_TODO,
      FETCH_TODO,
      FETCH_TODOS,
      DELETE_TODO
    } from '../actions/types';

    export default (state = {}, action) => {
      switch (action.type) {
        case FETCH_TODOS:
          return { ...state, ..._.mapKeys(action.payload, 'id') };
        case CREATE_TODO:
        case FETCH_TODO:
        case EDIT_TODO:
          return { ...state, [action.payload.id]: action.payload };
        case DELETE_TODO:
          return _.omit(state, action.payload);

        default:
          return state;
      }
    };

actions/index.js


        import todos from '../apis/todos';
    import history from '../history';
    import {
      SIGN_IN,
      SIGN_OUT,
      CREATE_TODO,
      EDIT_TODO,
      FETCH_TODO,
      FETCH_TODOS,
      DELETE_TODO
    } from './types';

    export const signIn = userId => {
      return { type: SIGN_IN, payload: userId };
    };

    export const signOut = () => {
      return { type: SIGN_OUT };
    };

    export const fetchTodos = () => async dispatch => {
      const response = await todos.get('/todos');

      dispatch({ type: FETCH_TODOS, payload: response.data });
    };

    export const createTodo = formValues => async dispatch => {
      const response = await todos.post('/todos', formValues);
      dispatch({ type: CREATE_TODO, payload: response.data });
      history.push('/');
    };



Upvotes: 0

Views: 127

Answers (1)

Garry
Garry

Reputation: 534

https://github.com/HosMercury/todos/blob/master/src/reducers/index.js here you are passing the list as todo not as todos.

Here you can check console in sandbox https://codesandbox.io/s/github/HosMercury/todos

Upvotes: 2

Related Questions