Búsqueda de sitios web

reactjs - React-Redux, no se puede asignar un valor a una cadena vacía


Estoy usando el hook useDispatch y no puedo establecer la cadena en una cadena vacía. Siempre establece el valor en la última letra.

App.tsx

const dispatch = useDispatch();
dispatch(updateLocation(''));

reducers.tsx

const setLocation = (location = "", action: any) => {
  switch (action.type) {
    case "Location":
      return action.value || location;
    default:
      return location;
  }
};

action.tsx

export const updateLocation = (location: string) => {
  return {
    type: "Location",
    value: location,
  };
};

Respuesta #1

Dado que la cadena vacía es falsa, siempre estableces el valor de la ubicación.

Necesitas cambiar tu código de reducers:

const setLocation = (location = "", action: any) => {
  switch (action.type) {
    case "Location":
      return action.value !== undefined ? action.value : location;
    default:
      return location;
  }
}; 

Respuesta #2

si action.value es una cadena vacía, se evaluará como falso y así se devuelve location (también conocida como última letra) y no la cadena vacía.

intenta quitar "|| location" de tu código.