léo lechoco
léo lechoco

Reputation: 15

How can I use a variable in my reducer, set with an object

I have some issues using one of my variable as an object.

import React from 'react'

const PaginationReducer = function(state = {}, action){

 switch(action.type){


    case 'PAGINATION_INIT_REDUCER' :

        console.log('REDUCER RECEIVED ' +  action.payload.currentPage); 
        state[ action.payload.name ] =  action.payload.value;
        state[action.payload.totalPage] = action.payload.totalPage
        state[action.payload.currentPage] = action.payload.currentPage
        return { ...state }
        break;

        case 'PAGINATION_CHANGE' :

        var newPagination = {totalPage : action.payload.totalPage, currentPage:action.payload.currentPage }
        var name= action.payload.paginationName;
        return { ...state, name : newPagination }}
        break;


}

return state;

}

export {PaginationReducer}

My probleme is with using name, I cannot find a way to get action.payload.paginationName as my key.

I'm not an expert in Js.

Upvotes: 1

Views: 398

Answers (2)

Raicuparta
Raicuparta

Reputation: 2115

Not sure if I get the question. You want to use action.payload.paginationName as an object key instead of name? If so, You can do this:

return {
  ...state,
  [action.payload.paginationName] : newPagination,
}

Basically the [] lets you use defined variables as keys in objects.

Upvotes: 1

Amruth
Amruth

Reputation: 5912

Initialize state with name attribute too.

const PaginationReducer = function(state = {name:{}, action){

Upvotes: 0

Related Questions