useLocation 和 useParams 会返回未定义的初始值吗?

时间:2021-07-01 14:35:46

标签: reactjs react-router react-router-dom

  const location = useLocation();
  const { id } = useParams();
  const queryString = (...parse some data with location)
  let key = '';

  switch (id) {
    case 'first':
      key = queryString.text;
      break;
    default:
      break;
  }

  const idParam = useMemo(() => {
    switch (p) {
      case 'a':
        return {
          id,
          key,
        };
      default:
        return { id: '', key: '' };
    }
  }, [id, key]);

  useEffect(() => {
    const f = async () => {
      try {
        ... ajaxCall ...
        const token = result.data.token;
        if (token) {
login... change location
        } else {
          no login...
        }
      } catch (error) {
        setError(true);
      } finally {
        setLoading(false);
      }
    };
    f();
  }, [idParams]);

  return (
    <>
      <LoadingBox isLoading={loading} />
      {isError && <NonAuthPage />}
    </>
  );
};

我用 /:id?someParam=text 用 react-router 写了一些反应代码 我用这个值调用ajax函数。 它总是渲染一次? 如果我写了 id 值和参数,useLocation、useParams 总是返回值? 我担心 id,并且键值是 init undefined 并发送不需要的 ajax 调用。**

0 个答案:

没有答案