how to updated nested state array in extrareducer

27 Views Asked by At

I am looking for solution that when I get API response then I want to update searches property in the initial state but I am unable to update. I tried following methods but not working

state.searches = data // not working

state.searches.push(data) //not working

return {...state, searches:[...state.searches, state.searches.concat(data)] // also not working

How can I update searches property array with action.payload.data or push action.payload.data in searches property

import {createSlice, createAsyncThunk} from "@reduxjs/toolkit"
import { ENDPOINTS } from "../../backend/API"
import axios from "axios"

//SEARCH TENANT AXIOS CALL USING ASYNC THUNK
export const searchTenants = createAsyncThunk("searchTenants", async (data) => {
    try {
        //Creating API call using ENDPOINTS as Base URL (/api/tenants/search)
        return await axios.post(ENDPOINTS.SEARCH_TENANTS, data).then(res => res.data)
    } catch (error) {
        //Incase of error catch error
        return error.response.data.error[0]
    }
})


//Creating Tenants Slice
export const tenantSlice = createSlice({
    name: "tenants",
    initialState: {
        current: {},
        data: [],
        searches: []
    },
    reducers:{
        clearTenants(){
            return {
                current: {},
                data: [],
                searches: []
            }
        }
    },
    extraReducers: (builder) => {
        
        //@CaseNo       01
        //@Request      POST
        //@Status       Success
        //@Loading      False
        //@Data         Searched Data stored in state
        builder.addCase(searchTenants.fulfilled, (state, action) => {
           //Check for request success
           if(action.payload.success === true){
            
                const searches = action.payload.data
                console.log("state is working")
                state.searches = data
                //return [...state.searches, ...searches]
                // state.searches.push({id: "demo"})
            }
            // return state 
            // return actions.payload
        })
        
    }
})

//Export Reducer functions
export const {clearTenants} = tenantSlice.actions
export default tenantSlice.reducer ```
0

There are 0 best solutions below