Tengo la siguiente acción en el archivo redux action.js ,
export const removeActiveLayer = (id) => (dispatch) => { dispatch({ type: REMOVE_ACTIVE_LAYER, payload: id, }); }; mi archivo reducer.js es el siguiente,
case REMOVE_ACTIVE_LAYER: return { ...state, activeLayers: state.activeLayers.filter((l) => action.payload !== l.id), }; Traté de eliminar la capa del archivo RemoveLayer.js como se muestra a continuación,
this.props.removeLayer(55); La capa se elimina con éxito. No hay problema. Mi pregunta es, ¿cómo puedo obtener esa id=55 de otro archivo Layers.js ?
He intentado obtenerlo en ComponentDidUpdateProps como se muestra a continuación,
componentDidUpdate(prevProps, prevState) { const { removeActiveLayer } = this.props; if (removeActiveLayer) { console.log(removeActiveLayer); } }Es solo una función, pero en realidad, necesito una identificación eliminada. Cualquier ayuda será muy apreciada.
También debe guardar la id eliminada en estado redux si desea acceder a ella en algún otro componente.
Entonces su archivo reducer.js se convertiría en:
case REMOVE_ACTIVE_LAYER: return { ...state, removedId: action.payload, activeLayers: state.activeLayers.filter((l) => action.payload !== l.id), }; Y ahora puede acceder al removedId como accesorio desde cualquier otro componente que desee:
componentDidUpdate(prevProps, prevState) { const { removedId } = this.props; if (removedId) { console.log(removedId); } }Dado que en el estado ya tiene activeLayers , simplemente agregue un nuevo subestado llamado lastRemovedLayer . Su estado se verá así:
state = { // others, activeLayers: [], lastRemovedLayer: null, // it will be your layer id }luego en el reductor
case REMOVE_ACTIVE_LAYER: return { ...state, activeLayers: state.activeLayers.filter((l) => action.payload !== l.id), lastRemovedLayer: l.id };Ahora puede acceder a esta última capa eliminada en cualquier componente en cualquier momento/ciclo de vida que desee