【问题标题】:React js useEffect not updating useState value on location pathname change?React js useEffect 不更新位置路径名更改时的 useState 值?
【发布时间】:2021-09-28 19:15:32
【问题描述】:

Reactjs useEffect 不更新位置路径名更改时的 useState 值。我有两个 clientLayout 和 AdminLayout 我根据 useState 将客户端切换到管理布局 这不是更改路线或位置路径的更新。它是多布局概念。

import ClientLayout from './views/client-views/client-layout/index.js';
import AdminLayout from './views/admin-views/admin-layout/index';
import Layout from './views/layouts/Layout';
import {BrowserRouter as Router,useLocation} from 'react-router-dom';
import React,{useState,useEffect} from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';

function App() {

      const[clientLayout,setClientLayout] = useState(false);
      const location = useLocation();
      useEffect(()=>{
         let location = window.location.pathname;
         let pathname = location.split('/');
         if(pathname[1] == 'client'){
           setClientLayout(true)
       }
     },[window.location.pathname])


  return (
    <div className="App">
       <Router>
     {
       clientLayout ? <AdminLayout /> : <ClientLayout />
     }
       
       </Router>
      
    </div>
  );
}

export default App;

【问题讨论】:

标签: javascript reactjs


【解决方案1】:

尝试使用 location 代替 window.location:

const location = useLocation();
useEffect(() => {
  let pathname = location.pathname.split("/");
  if (pathname[1] == "client") {
    setClientLayout(true);
  }
}, [location.pathname]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-16
    • 2020-12-22
    • 1970-01-01
    • 2021-01-19
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    相关资源
    最近更新 更多