react-router-dom

При переходе на товар X, отображается товар, при нажатии кнопки назад в браузере я выбираю товар Y. И в этот момент сначала отображается товар X, а через секунду уже товар Y. Как решить этот вопрос ? Чтобы при каждом переходе сначала предыдущий товар не отображался, а сразу выбранный товар ? Вот компонент где происходит переход:

import React from "react";
import i18n from "../18n";
import { Link } from "react-router-dom";

const ProductListShow = ({ data }) => {
  const currentLanguage = i18n?.language;

  return (
    <>
      <Link to={`/product/${data?.translations?.az?.name}/${data?.id}`}>
        <div className="products_card">
          <h6>{data?.category?.translations[currentLanguage]?.name}</h6>
          <p className="prod_name">
            {data?.translations[currentLanguage]?.name ||
              data?.translations?.az?.name}
          </p>

          <div className="product_img">
            <img src={data?.image?.image} alt="" />
          </div>
          <div className="prod_itself">
            <div className="prod_price">
              {data?.final_price ? (
                <div>
                  <p className="sale_price">
                    {data?.final_price} <span>₼</span>
                  </p>
                  <p className="first_price1">
                    <del>
                      {data?.price} <span>₼</span>
                    </del>
                  </p>
                </div>
              ) : (
                <p className="first_price">
                  {data?.price} <span>₼</span>
                </p>
              )}
            </div>
            <svg
             
            </svg>
          </div>
        </div>
      </Link>
    </>
  );
};

export default ProductListShow;

Я использую useParams для определения id товара А вот single page :

const SinglePage = () => {
  
  const { productName, id } = useParams();
  console.log(productName, id);

  const dispatch = useDispatch();
 


  const  productIDList= useSelector((state) => state.Data.productIDList);
  const  loaderTwo  = useSelector((state) => state.Data.loaderTwo);


  useEffect(() => {
    if (id) {
      // setLoading(true);
      dispatch(getProductIDList(id));
    }else{
      // dispatch(getProductIDList(proID_local));
    }
  }, [dispatch, id]);

  const [activeIndex, setActiveIndex] = useState(null);

  const handleClick = (i) => {
    setActiveIndex(i);
  };
  const handleImageClick = (image) => {
    setSliderItem(image);
  };

  const { t } = useTranslation();
 
  const imagesFromApi = useMemo(
    () => productIDList?.image || [],
    [productIDList?.image]
  );

  const [sliderItem, setSliderItem] = useState(imagesFromApi[0] || {});
  const [value, setValue] = useState(0);
  useEffect(() => {
    if (imagesFromApi.length > 0) {
      setSliderItem(imagesFromApi[0]);
    }
  }, [imagesFromApi]);

  const handlePrev = () => {
    let index =
      value <= imagesFromApi.length - 1 && value > 0 ? value - 1 : value;
    setValue(index);
    const slider = imagesFromApi[index];
    setSliderItem(slider);
    setActiveIndex(index);
  };

  const handleNext = () => {
    let index = value < imagesFromApi.length - 1 ? value + 1 : value;
    setValue(index);
    const slider = imagesFromApi[index];
    setSliderItem(slider);
    setActiveIndex(index);
  };

  const currentLanguage = i18n.language;

Ответы (0 шт):