React 16x - قسمت 16 - مسیریابی - بخش 2 - پارامترهای مسیریابی
نویسنده: وحید نصیری
تاریخ: ۱۳۹۸/۰۹/۱۲ ۸:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
import ProductDetails from "./components/productDetails";
// ...
class App extends Component {
render() {
return (
<div>
<NavBar />
<div className="container">
<Switch>
<Route path="/products/:id" component={ProductDetails} />
<Route
path="/products"
render={props => (
<Products param1="123" param2="456" {...props} />
)}
/>
<Route path="/posts/:year/:month" component={Posts} />
<Route path="/admin" component={Dashboard} />
<Route path="/" component={Home} />
</Switch>
</div>
</div>
);
}
} import React, { Component } from "react";
class ProductDetails extends Component {
handleSave = () => {
// Navigate to /products
};
render() {
return (
<div>
<h1>Product Details - </h1>
<button className="btn btn-primary" onClick={this.handleSave}>
</div>
);
}
}
export default ProductDetails;
<h1>Product Details - {this.props.match.params.id} </h1> {this.state.products.map(product => (
<li key={product.id}>
<a href={`/products/${product.id}`}>{product.name}</a>
</li>
))} import { Link } from "react-router-dom";
// ...
<Link to={`/products/${product.id}`}>{product.name}</Link> <Route path="/posts/:year/:month" component={Posts} /> <Route path="/posts/:year?/:month?" component={Posts} /> import React from "react";
const Posts = ({ match }) => {
return (
<div>
<h1>Posts</h1>
Year: {match.params.year} , Month: {match.params.month}
</div>
);
};
export default Posts;
> npm i query-string --save
import queryString from "query-string";
const Posts = ({ match, location }) => {
const result = queryString.parse(location.search);
console.log(result);
// ... {approved: "true", sortBy: "newest"} const { approved, sortBy } = queryString.parse(location.search); import React from "react";
const NotFound = () => {
return <h1>Not Found</h1>;
};
export default NotFound; <Route path="/" exact component={Home} /> import { Redirect, Route, Switch } from "react-router-dom";
//...
import NotFound from "./components/notFound";
//...
class App extends Component {
render() {
return (
<div>
<NavBar />
<div className="container">
<Switch>
//...
<Route path="/not-found" component={NotFound} />
<Route path="/" exact component={Home} />
<Redirect to="/not-found" />
</Switch>
</div>
</div>
);
}
} <Redirect from="/messages" to="/posts" />
class ProductDetails extends Component {
handleSave = () => {
// Navigate to /products
this.props.history.push("/products");
};
const Dashboard = ({ match }) => {
return (
<div>
<h1>Admin Dashboard</h1>
<div className="row">
<div className="col-3">
<SideBar />
</div>
<div className="col">
<Route path="/admin/users" component={Users} />
<Route path="/admin/posts" component={Posts} />
</div>
</div>
</div>
);
}; import React from "react";
import { Link } from "react-router-dom";
const SideBar = () => {
return (
<ul className="list-group">
<li className="list-group-item">
<Link to="/admin/posts">Posts</Link>
</li>
<li className="list-group-item">
<Link to="/admin/users">Users</Link>
</li>
</ul>
);
};
export default SideBar; import React from "react";
const Users = () => {
return <h1>Admin Users</h1>;
};
export default Users; import React from "react";
const Posts = () => {
return (
<div>
<h1>Admin Posts</h1>
</div>
);
};
export default Posts; <MyComponent{...this.props} /> <ChildComponent {...this.props} /> const Dashboard = ({ match }) => {
return (
<div>
<h1>Admin Dashboard</h1>
<div className="row">
<div className="col-3">
<SideBar />
</div>
<div className="col">
<Route path="/admin/users" component={Users} />
<Route path="/admin/posts" component={Posts} />
</div>
</div>
</div>
);
}; <Switch>
<Route exact path="/users" component={MyComponent} />
<Route component={GenericNotFound} />
</Switch> <Route exact path="/current/page/path" component={NewComp}/> <Route path="/admin/users" component={Users} />
<Route path="/admin/posts" component={Posts} /> <base href="/" /> <!-- for local host -->
<head>
<link rel="stylesheet" href="./style.css" ></link>
</head>
<head>
<link rel="stylesheet" href="/style.css" ></link>
</head>
<Routes>
<Route path="/product/list" element={<ProductList/>} />
<Route path="/product/new" element={<NewProduct/>} />
</Routes> <Routes>
<Route path="/post" element={<Posts/>}>
<Route path="images" element={<Images />} />
<Route path="text" element={<Text />} />
<Route path="/post" element={<Text />} />
</Route>
</Routes> <div className="list-group">
<Link to="/post/images" className="list-group-item list-group-item-action active" aria-current="true">
Images Post
</Link>
<Link to="/post/text" className="list-group-item list-group-item-action">Text Post</Link>
</div>
<Outlet /> <div className="list-group">
<Link to="images" className="list-group-item list-group-item-action active" aria-current="true">
Images Post
</Link>
<Link to="text" className="list-group-item list-group-item-action">Text Post</Link>
</div>
<Outlet /> <Routes>
<Route path="/post" element={<Posts/>}>
<Route path="images" element={<Images />} />
<Route path="text" element={<Text />} />
<Route path="/post" element={<Text />} />
</Route>
</Routes> <Routes>
<Route path="/product/list" element={<ProductList/>} />
<Route path="/product/new" element={<NewProduct/>} />
<Route path="/post" element={<Posts/>}>
<Route path="images" element={<Images />} />
<Route path="text" element={<Text />} />
<Route path="/post" element={<Text />} />
</Route>
<Route path="*" element={<NotFound />} />
</Routes> import React, { Component } from 'react';
import {useParams,useNavigate,useLocation} from 'react-router-dom';
import { useEffect } from 'react';
const TestRoute=(props)=>{
const navigate=useNavigate();
const location=useLocation()
const params=useParams();
const {id,name}=useParams();
useEffect(()=>{
console.log(location.search);
},[])
const gotosfc=()=>{
navigate("/sfc",{replace:true});
}
return(
<>
<strong>Id :</strong> {id}
<br/>
<strong>Name :</strong> {name}
<br/>
<button onClick={()=>gotosfc()}>Go to SFC</button>
</>
)
}
export default TestRoute; <Route path="/product/edit/:id/:name" element={<TestRoute />} /> <Route path="/product/edit/:id" element={<TestRoute />} />
<Route path="/product/edit/:id/:name" element={<TestRoute />} />