美文网首页
react的动态路由

react的动态路由

作者: 水晶草720 | 来源:发表于2022-03-14 17:21 被阅读0次

1. 动态路由传参 建议用这个,刷新不会丢

  history.push(`/detail/${id}`)

2 query传参

   history.push({ pathName: '/detail', query: { myid: id } })   

3. state传参

   history.push({pathname:'/detail',state:{myid: id}})    
import React, {useEffect, useState } from 'react'
import axios from 'axios'
import { NavLink,useHistory } from "react-router-dom"
export default function NowPlaying(props) {
    const [list, setlist] = useState([])
    useEffect(() => {
        axios({
            url: "https://m.maizuo.com/gateway?cityId=110100&pageNum=1&pageSize=10&type=2&k=5064519",
            hearder: {
                'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.0","e":"16473286284773838969634817","bc":"110100"}',
                'X-Host': 'mall.film-ticket.film.list'
            }
        }).then((res) => {
            console.log(res.data.data.films)
            setlist(res.data.data.films)
        })  
    }, [])
    const history = useHistory()
    const handleChangePage = (id) => {
    //     windows.location.href = "#/detail/" + id
    //     props.history.push(`/detail/${id}`)
    //    this.props.history.push(`/detail/${id}`)
    // 1 -动态路由传参  建议用这个,刷新不会丢
      history.push(`/detail/${id}`)
    // 2 query传参    
        // history.push({ pathName: '/detail', query: { myid: id } })   
    // 3 state传参
        // history.push({pathname:'/detail',state:{myid: id}})    
        
    }
    return (
        <div>
            {
                list.map(item => {
                    /**编程式导航 */
                    <li key="item.filmId" onClick={() => handleChangePage(item.filmId)}>
                    {/* 声明式导航 */}
                    {/* <NavLink to={'/detail' + item.filmsId}>{item.name}</NavLink> */}
                    </li>
                })
            }
      </div>
    )
}

import React, { Component } from 'react'
import { HashRouter, Route, Redirect,Switch } from 'react-router-dom'

import Films from './../views/Films'
import Cinemas from './../views/Cinemas'
import Center from './../views/Center'
import Detail from './../views/Detail'

import NotFound from './../views/NotFound'


export default class indexRouter extends Component {
  render() {
    return (
        <HashRouter>
            {/* 插槽 */}
            {this.props.children}
            <Switch>
                <Route path="/films" component={Films} />
                <Route path="/cinemas"  component={Cinemas} />
                <Route path="/center" component={Center} />

                {/* 动态路由 */}
                {/* <Route path="/detail/:myid"  component={Detail} /> */}
                {/* query传参 */}
                <Route path="/detail" component={Detail} />
                {/* <Redirect from="/"  to="/films" />*/}
                <Redirect from="/"  to="/films" exact />
                {/* 精确匹配  exact*/}   
                <Route  component={NotFound} />
            </Switch>
            {/* 模糊匹配 */}
       </HashRouter>
    )
  }
}

相关文章

  • react18 useRoutes嵌套路由及懒加载

    之前写过react16的嵌套路由及懒加载的方案react 中的 suspense 和 lazy 与 动态路由加载[...

  • react-router4 modal与动态路由的冲突

    项目使用了1,react-router4,2,Bundle 动态加载路由问题:页面路由使用了动态路由,要实现一个m...

  • React动态路由

    1.安装依赖npm install react-router-dom2.导入路由 import {BrowserR...

  • React路由

    react-router React路由,让父组件动态去挂载不同的子组件,以目前最新的4.x为例; 前端路由的实现...

  • react的动态路由

    1. 动态路由传参 建议用这个,刷新不会丢 2 query传参 3. state传参

  • React路由

    React-Router的基本配置 基本案例 路由传参 动态路由 首先在app.jsx中添加路由(分别是新闻列表页...

  • React-Router v4 学习

    React-Router v4 1. 设计理念1.1. 动态路由1.2. 嵌套路由1.3. 响应式路由 2. 快速...

  • react-router4@笔记

    新项目使用react-router@4来进行路由跳转,使用非static的配置方式该用jsx。之前配置动态生成路由...

  • React 路由动态加载

    最近的项目首页存在多个路由标签,且每个路由页都比较复杂,使用默认的 react-scripts build 打包之...

  • react动态路由配置

    首先创建Router/index.js,eg:包含Home和Login 在App.js中引入: 到此,动态路由配置完成。

网友评论

      本文标题:react的动态路由

      本文链接:https://www.haomeiwen.com/subject/cyeydrtx.html