Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ReactJS How do you switch between pages in React?

So coming from an Angular/AngularJS background, you have states, and each state is a separate page. E.g. in a social network you can have a state with your feed, a state with a list of your friends, or a state to see a profile etc. Pretty straightforward. Not so much in React for me.

So let's say I have an application with 2 pages: a list of products and a single product view. What would be the best way to switch between them?

The simplest solution is to have an object which has a stateName and is a boolean

constructor() {   super();    this.state = {     productList: true,     productView: false   } } 

And then have something like that in your render() function

return() {   <div className="App">     // Or you could use an if statement     { this.state.productList && <ProductList /> }     { this.state.productView && <ProductView product={this.state.product} /> }   </div> } 

Pretty straightforward, right? Sure, for a 2 page application that is.

But what if you have a large app with 10, 20, 100 pages? The return() part of the render would be a mess, and it would be madness to track the status of every state.

I believe there should be a better way to organize your app. I tried googling around but I couldn't find anything useful (except for using if else or conditional operators).

like image 585
Alexander Donets Avatar asked Apr 04 '18 11:04

Alexander Donets


People also ask

How do I change pages in react router?

Using links to switch pages js file, add the following code: import React, { Fragment } from "react"; import "./index. After importing Link , we have to update our navigation bar a bit. Now, instead of using a tag and href , React Router uses Link and to to, well, be able to switch between pages without reloading it.

How do I move to a previous page in react?

To go back to the previous page, pass -1 as a parameter to the navigate() function, e.g. navigate(-1) . Calling navigate with -1 is the same as hitting the back button. Similarly, you can call the navigate function with -2 to go 2 pages back.

How do you switch between components in react?

We can use the following approach in ReactJS to use the Evergreen Switch Component. Switch Props: id: It is used to denote the id attribute of the radio. name: It is used to define the name attribute of the radio.


1 Answers

I'd recommend you to check react-router to solve this situation

It easily allows you to create custom routes like this:

import React from "react"; import { BrowserRouter as Router, Route, Link } from "react-router-dom";  const BasicExample = () => (   <Router>     <div>       <ul>         <li>           <Link to="/">Home</Link>         </li>         <li>           <Link to="/about">About</Link>         </li>         <li>           <Link to="/topics">Topics</Link>         </li>       </ul>        <hr />        <Route exact path="/" component={Home} />       <Route path="/about" component={About} />       <Route path="/topics" component={Topics} />     </div>   </Router> );  const Home = () => (   <div>     <h2>Home</h2>   </div> );  const About = () => (   <div>     <h2>About</h2>   </div> );  const Topics = ({ match }) => (   <div>     <h2>Topics</h2>     <ul>       <li>         <Link to={`${match.url}/rendering`}>Rendering with React</Link>       </li>       <li>         <Link to={`${match.url}/components`}>Components</Link>       </li>       <li>         <Link to={`${match.url}/props-v-state`}>Props v. State</Link>       </li>     </ul>      <Route path={`${match.url}/:topicId`} component={Topic} />     <Route       exact       path={match.url}       render={() => <h3>Please select a topic.</h3>}     />   </div> );  const Topic = ({ match }) => (   <div>     <h3>{match.params.topicId}</h3>   </div> );  export default BasicExample; 

For the documentation and other examples, like nested Routing, checkout this page.

like image 168
manelescuer Avatar answered Oct 03 '22 00:10

manelescuer