当前位置: 首页 > news >正文

自己建网站卖鞋flash网站源码

自己建网站卖鞋,flash网站源码,茂名营销型网站建设,网站 租用服务器价格文章目录1.什么是路由2.路由分类3.react-router-dom的理解4. react-router-dom相关API5.其他6. react-router5 路由基本使用1.效果2.代码App.js一级路由home.js下的二级路由7.路由传参的三种方式8.react-router6 基本使用1.一级路由2.二级路由3.hooksuseRoutesuseParamsuseSear…

文章目录

    • 1.什么是路由
    • 2.路由分类
    • 3.react-router-dom的理解
    • 4. react-router-dom相关API
    • 5.其他
    • 6. react-router5 路由基本使用
      • 1.效果
      • 2.代码
        • App.js一级路由
        • home.js下的二级路由
    • 7.路由传参的三种方式
    • 8.react-router6 基本使用
      • 1.一级路由
      • 2.二级路由
      • 3.hooks
        • useRoutes
        • useParams
        • useSearchParams
        • useLocation
        • useNavigate
    • 9.react-router5 和 react-router6 区别

1.什么是路由

  1. 一个路由就是一个映射关系(key:value)
  2. key为路径,value可能是function或component

2.路由分类

  • web ( PC端 )
  • native(react native)
  • anywhere (其他)

3.react-router-dom的理解

  1. react的一个插件库。

  2. 专门用来实现一个SPA应用。

  3. 基于react的项目基本都会用到此库。

4. react-router-dom相关API

  1. BrowserRouter

  2. HashRouter

  3. Route

  4. Redirect

  5. Link

  6. NavLink

  7. Switch

5.其他

  1. history对象

  2. match对象

  3. withRouter函数

6. react-router5 路由基本使用

1.效果

react-router5

2.代码

App.js一级路由

注意:

  • activeClassName 为当前激活的样式类名,demo 提前在 public 中的 index.html 中定义好

封装的路由 NavLink

// 封装后的 NavLink
function MyLink(props){return  <NavLink activeClassName='demo' {...props} />
}

App.jsx

import {  Route, Switch,Redirect, BrowserRouter, Switch, Redirect } from 'react-router-dom'
import About from './about/index'
import Home from './home/index'export default function App() {return (<BrowserRouter><div><div> header  </div><div style={{ flex: 1, fontSize: '32px' }} ><MyLink to={'/about'} >about</MyLink><br /><MyLink to={'/home'} >home</MyLink></div><div style={{ flex: 7, fontSize: '32px' }} ><Switch><Route to={'/about'}  component={About} /><Route to={'/home'}  component={Home} /><Redirect to={'home'} /></Switch></div></div></BrowserRouter>)
}

home.js下的二级路由

注意:因为根组件 App.js 已被 BrowserRouter 包裹,所以这里不需要用 BrowserRouter 再次包裹路由

import React from 'react'
import MyLink from '../com'
import Message from './message'
import New from './new'
import { Route, Redirect } from 'react-router-dom'
export default function Home() {return (<div  > <h1><MyLink to="/home/message" >message</MyLink><MyLink to="/home/new" >new</MyLink></h1> <div><Route path="/home/message" component={Message} /><Route path="/home/new" component={New} /><Redirect to="/home/message" /></div></div>)
}

7.路由传参的三种方式

  1. params

    Link

    let name = '张三'
    let age = 18
    <Link to=`/home/${name}/${age}` />
    

    Route

    <Route path="/home/:title/:age" />
    

    conponent 接收

    let { title, age } = props.match.params
    
  2. query

    Link

    <Link to=`/home?name='zhangsan'&age=18` />
    

    Route

    <Route path="/home" />
    

    conponent 接收

      import qs from 'querystring'let res = qs.parse(props.location.search.slice(1))
    
  3. state

    Link

    <Link to={{ pathname: '/home', state: { title:"zhangsan", age:18 } }} />
    

    Route

    <Route path="/home" />
    

    conponent 接收

    let {age,title} = props.location.state 
    

8.react-router6 基本使用

useRoutes 为路由表,可通过数组的形式进行嵌套配置

1.一级路由

app.js

import React, { useState } from 'react'
import { Route, Routes, Navigate, useRoutes } from 'react-router-dom'
import About from './about/index'
import Home from './home/index'
import Header from './Header/index' 
import Message from './home/message'
import New from './home/new'
import Detail from './home/detail'export default function Index() {let element = useRoutes([{path: '/about',element: <About />},{path: '/home',element: <Home />,children: [{path: 'message',element: <Message />,children: [// search, state 参数{path: 'detail',element: <Detail />,}]},{path: 'new',element: <New />,}]},{path: '/',element: <Navigate to="/home" />}])return (<div><Header /><div style={{ display: "flex" }} ><div style={{ flex: 1, fontSize: '32px' }} ><Link to={'/about'} >about</Link><br /><Link to={'/home'} >home</Link></div><div style={{ border: "10px solid red", padding: '20px', flex: 7 }} >{element}</div></div></div >)
}

2.二级路由

home.js

import React from 'react'
import Message from './message'
import New from './new'
import { Route, Navigate, Routes, Outlet, NavLink } from 'react-router-dom'export default function Home() {return (<div  ><h1><NavLink to="message"  >Message</NavLink> &nbsp;<NavLink to="new"  >New</NavLink></h1><div>{/* <Routes> <Route path={'/home/message'} element={<Message />} /><Route path={'/home/new'} element={<New />} /><Route path={'/home/message'} element={<Navigate to={'/home/message'} />} /><Redirect to="/home" /></Routes> */}// 路由出口<Outlet /></div></div>)
}

3.hooks

useRoutes

路由表

import {  useRoutes } from 'react-router-dom'
// 导入组件
import About from './about/index'
import Home from './home/index' 
import Message from './home/message'
import New from './home/new'
import Detail from './home/detail'export default function Index() { // 定义路由表
let element = useRoutes([{path: '/about',element: <About />},{path: '/home',element: <Home />,children: [{path: 'message',element: <Message />,children: [  {path: 'detail',element: <Detail />,}]} ]},{path: '/',element: <Navigate to="/home" />}])return (<div> <div style={{ display: "flex" }} ><div style={{ flex: 1, fontSize: '32px' }} ><Link to={'/about'} >about</Link><br /><Link to={'/home'} >home</Link></div><div style={{ border: "10px solid red", padding: '20px', flex: 7 }} >{/* <Routes> */}{/* <Route path={"/about"} element={<About />} /><Route path={"/home"} element={<Home />} /><Route path={"/"} element={<Navigate to="/home" />} /> */}{/* <Redirect to={"/home"}  /> */}{/* </Routes> */}// 渲染路由表{element}</div></div> </div >)
}

useParams

接收 params 参数

路由表配置

import {  useRoutes } from 'react-router-dom'
let element = useRoutes([  // params 参数{path: 'detail/:id/:title',element: <Detail />,} ])

Link配置

let v = { id: 0, title: '消息001' }
<Link to={`/home/message/detail/${v.id}/${v.title}` } >{v.title}</Link> 

使用

import React from 'react' 
import { useParams, useSearchParams, useLocation } from 'react-router-dom';{/* params 参数 */}
export default function Detail(props) {console.log('props', props);  let {title,id} = useParams() return (<div><ul> <h1>ID:{id}</h1><h1>title:{title}</h1> </ul></div>)
}

useSearchParams

路由表配置

import {  useRoutes } from 'react-router-dom'
let element = useRoutes([  // params 参数{path: 'detail',element: <Detail />,} ])

Link配置

let v = { id: 0, title: '消息001' }
<Link to={`/home/message/detail?id=${v.id} & title=${v.title}` } >{v.title}</Link> 

使用

import { useSearchParams } from 'react-router-dom';{/* search 参数 */}
export default function Detail() { let [search, setSearch] = useSearchParams()  let id = search.get("id")let title = search.get("title")return (<div><ul> <h1>ID:{id}</h1> <h1>title:{title}</h1> </ul></div>)
}

useLocation

路由表配置

import {  useRoutes } from 'react-router-dom'
let element = useRoutes([  // params 参数{path: 'detail',element: <Detail />,} ])

Link配置

let v = { id: 0, title: '消息001' }
<Link to={`/home/message/detail`} state={{ id: v.id, title: v.title }}
>{v.title}</Link> 

使用

import { useSearchParams, useLocation } from 'react-router-dom';{/* search 参数 */}
export default function Detail() { let search = useLocation().state  let id = search.get("id")let title = search.get("title")return (<div><ul> <h1>ID:{id}</h1> <h1>title:{title}</h1> </ul></div>)
}

useNavigate

编程时路由导航 => 只支持 state

import { useNavigate } from 'react-router-dom'
export default function Message() {let navigate = useNavigate()let mess = [{id: 0,title: '消息1'},{id: 1,title: '消息2'},{id: 2,title: '消息3'}]const seeDetail = (v) => {navigate('detail', {replace: false,state: {id: v.id,title: v.title,}})}return (<div><ul>{mess.map((v, i) => { return <h1 key={i}><Link  to={`/home/message/detail`}  state={{ id: v.id, title: v.title }}>{v.title}</Link><button onClick={() => seeDetail(v)} >查看详情</button></h1>})}</ul><div><Outlet /></div></div>)
}

9.react-router5 和 react-router6 区别

1.内置组件的变化: 移除,新增等

2.语法的变化: component=(About}变为 element=(}等。

3.新增多个hook: useParams、useMatch等useNavigate

4.官方明确推荐函数式组件了!! !

http://www.yayakq.cn/news/329014/

相关文章:

  • 网站及网页设计费用四川建设厅电话网站
  • 网站的关于我们怎么做辽宁省建设工程信息网如何传业绩
  • 软件网站模板网络营销导向企业网站建设的一般原则是什么?
  • 怎样建小型网站茂名市住房和城乡建设局网站
  • html5 网站鄂州seo多少钱
  • 个人网站设计目的旅游后台网站
  • 做网站制作宣传片素材视频免费下载
  • 自响应式网站是什么意思网站功能说明怎么做
  • 北京做网站比较有名的公司做网站要要多少钱
  • 惠州企业建站程序wordpress无法置顶
  • 中国商城网站建设带空间二字的韩国视频网站
  • 现在网站开发技术有哪些宁波网站建设计
  • 服务器做两个网站如何开发app小程序
  • 网站优化站外链接怎么做深圳贷款网站建设
  • 高仿做的好点的网站乌市高新区建设局网站
  • 买的网站模板里面是什么建设公司官方网站首页
  • 怎么开一个做网站的工作室360搜索入口
  • 环保公司网站架构怎么做wordpress教程通讯
  • 做网站用花瓣上的图片会侵权吗wordpress 插件评论区
  • 淘宝网站是怎么做的吗池州网站建设电话
  • 系统那个网站免费做短视频的软件
  • 罗村建网站网站制作软件手机
  • 淮安网站建设设计制作个人申请公众号注册
  • 上海想找人设计网站vi设计logo
  • 九亭网站建设添加网站备案号链接
  • 做离线版申报表进入哪个网站厦门室内设计公司排名
  • 阿里云网站建设初衷品牌建设需打持久战
  • 如何做好网站推广优化黄骅港属于哪个区
  • 网站代理合作三个关键词介绍自己
  • 做网站优化公司wordpress获取分类子分类所有文章