Estoy creando la funcionalidad de eliminación en mi aplicación. Pero de alguna manera no se está comportando correctamente.
El estado inicial y la función reductora se definen a continuación:
import { createSlice } from '@reduxjs/toolkit'; const filterDataTemplate = { programId: '', year: '', }; const initialState = { //some other state filterData: { ...filterDataTemplate }, }; const slice = createSlice({ name: 'editFilterSlice', initialState: initialState, reducers: { updateFilterProgramId: (state, action) => { return { ...state, filterData: { ...state.filterData, programId: action.payload, }, }; }, updateFilterYear: (state, action) => { return { ...state, filterData: { ...state.filterData, year: action.payload, }, }; }, }, }); export const { updateFilterYear, updateFilterProgramId, } = slice.actions; export default slice.reducer;Y los detalles del filtro son el objeto que contiene el año y el ID del programa:
filterDetails: {year:2021, programId: "Ameria"}y quiero lograr
filterDetails: {year:"", programId: ""}Entonces, el controlador de eliminación se indica a continuación para lograr los criterios anteriores:
const handleDelete = (e) => { e.preventDefault(); if (//some condition) { dispatch(updateFilterYear('')); console.log('filterdetails', filterDetails); //filterDetails: {year:2021, programId: "Ameria"} } else { dispatch(updateFilterProgramId('')); } }. //Outside handleDelete function console.log('filterdetails', filterDetails); //filterDetails: {year:"", programId: "Ameria"}Por lo tanto, los detalles del filtro que contienen el año y el ID del programa se obtienen con la ayuda de este código:
const filterDetails = useAppSelector( (state) => state.locationsFilter.filterData );La función handleDelete se llama correctamente cuando hago clic en un botón
Pero después de ejecutar este código, los detalles del filtro no se actualizan la primera vez, pero cuando vuelvo a ejecutar el controlador por segunda vez, se actualiza. Y fuera de handleDelete muestra el valor correcto en la consola, pero dentro de la consola handleDelete muestra el valor correcto por segunda vez.
Está mostrando un comportamiento muy extraño.