ReactJS useEffect для проверки состояния useLocation React Router - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь проверить, существует ли состояние в useLocation. Есть идеи, как это сделать лучше?

Этому компоненту передается состояние, которое содержит состояние пользователя и адрес, через компонент Link-to response-router. Затем он переходит в состояние под названием Payload для обработки.

import React, { useState, useEffect } from "react";
import { useParams, useNavigate, useLocation } from "react-router";


const Comp = () => {
  const { userId } = useParams();
  const location = useLocation();
  const navigate = useNavigate();
  const [payload, setPayload] = useState({
    country: "",
    city: "",
    address: "",
    notes: "",
    address_phone_number: "",
    user: "",
  });

  useEffect(() => {
    let checkUser;
    try {
      checkUser = location.state.user;
    } catch {
      checkUser = null;
    }
    if (checkUser === null) {
      navigate(`/admin/dashboard/users/${userId}/details/`, {
        replace: true,
      });
    }
  }, [navigate, location, userId]);

  useEffect(() => {
    let checkAddress;
    try {
      checkAddress = location.state.address;
      console.log("payload", checkAddress);
      if (checkAddress) {
        setPayload({ ...checkAddress });
      }
    } catch {
      checkAddress = null;
    }
  }, [navigate, location]);

  useEffect(() => console.log("state", payload), [payload]);

  return <div>SOME STUFF HERE</div>
};

export default Comp;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...