Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

152
Vistas
Redux action is dispatched after value of that action is checked

I have a card component that has a favourite icon on it. What I want to achieve is that the card would not be opened if favourite icon is clicked and would be opened otherwise. The problem is that Redux action is dispatched after value of that action is checked (at least I think so).

Redux state says isFavIconClicked = true, but calling SetSelectedMovieId() acts as if isFavClicked = false:

  const SetSelectedMovieId = (movieId: number) => {
    if (!isFavClicked) {
      dispatch(isMoviePageOpened(true));
      dispatch(changeSelectedMovie(movieId));

    } 

Full code:

const Card: React.FC<Props> = ({ card }: Props) => {
  const dispatch = useDispatch();

  const searchedMovie = useSelector((state: RootState) => state.searchedMovie);
  const isFavClicked = useSelector((state: RootState) => state.isFavIconClicked);

  const SetIsFavouriteIconClicked = (isFavIconClicked: boolean) => {
    dispatch(isFavouriteIconClicked(isFavIconClicked));
  };

  const SetSelectedMovieId = (movieId: number) => {
    if (!isFavClicked) {
      dispatch(isMoviePageOpened(true));
      dispatch(changeSelectedMovie(movieId));

    } 
    else {
      SetIsFavouriteIconClicked(false);
    }

  };

  const AddFavouriteMovie = (movieId: number) => {
    SetIsFavouriteIconClicked(true);
    dispatch(addFavouriteMovie(movieId));
  };

  return (
    <Grid item key={card.id}>
      <NavLink to={'/movie/' + card.id} className="trial">
        <div
          className={`card-container ${
            searchedMovie && 'card-container-when-search'
          }`}
          onClick={() => SetSelectedMovieId(card.id)}
        >
          <img
            className="card-poster"
            alt={'Poster of ' + card.title}
            src={
              card.poster_path
                ? card.poster_path.includes('.jpg')
                  ? posterBaseUrl + card.poster_path
                  : noImage
                : noImage
            }
            title={card.title}
          />
          <div className="card-details">
            <div className="title">
              <FavoriteBorderIcon onClick={() => AddFavouriteMovie(card.id)} />
            </div>
            <div className="details">{card.vote_average}</div>
          </div>
        </div>
      </NavLink>
    </Grid>
  );
};

export default Card;

How should I solve it? Thanks

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda