Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
217 views
in Technique[技术] by (71.8m points)

reactjs - React - Conditionally Redirect to a page based on item in local Storage

I am having four pages in react. Basically there are four forms which the user need to fill and at the last form which is page 4, we have the post all the data. Everything works fine, but I also want to check if the user closes the tab after completing one form and then comes back, I am trying to redirect the user to the second page straight away, without needing him to fill the first form again. So what I am doing is putting the fields from Page 1 (form 1) into local storage and checking whether the local storage is empty or not in the first page in useEffect and then doing the redirect there. But it is not working for me. It goes to an infinite loop in the useEffect

My App.js File

 <div className="App">
  <Header />
    <Switch>
      <Route path='form1' exact component={form1}></Route>
      <Route path='form2' exact component={form2}></Route>
      <Route path='form3' exact component={form3}></Route>
      <Route path='form4' exact component={form4}></Route>
      <Route path='/' exact component={form1}></Route>
      <Route component={NotFound} />
    </Switch>
    </div>
</Router>
  );
}`

My Form 1 file

useEffect(() => {
 if(localStorage.getItem("form1Details")) {
    history.push("/form2");
  }
}, []);

Error in console

question from:https://stackoverflow.com/questions/65642375/react-conditionally-redirect-to-a-page-based-on-item-in-local-storage

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I always avoid these warnings by using a __isMounted variable:

const (__isMounted, setMounted) = useState(true);

useEffect(() => {
 if(localStorage.getItem("form1Details") && __isMounted) {
    history.push("/form2");
  }

 return () => setMounted(false);
}, []);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...