react 路由

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import { BrowserRouter } from 'react-router-dom' //把最外层包裹起来


ReactDOM.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>,
  document.getElementById('root')
);
function App() {
  return (
    // Switch 当匹配到detail就不会继续往下执行了
    // Redirect 重定向谁都不匹配去index
    // 从最开始的注册的路由开始匹配,有二级路由不能开启严格模式
    <Layout className="demo-layout-l">
      <Body>
        <Sider>
          <Menu >
            <Menu.SubMenu title="首页">
              <NavLink to='/index'>首页</NavLink>
            </Menu.SubMenu>
            <Menu.SubMenu title="Home">
              <NavLink to='/home'>Home</NavLink>
            </Menu.SubMenu>
            <Menu.SubMenu title="Detail">
              <NavLink to='/detail'>Detail</NavLink>
            </Menu.SubMenu>
          </Menu>
        </Sider>
        <Content>
          <Switch>
            <Route path="/index" component={Index} />
            <Route path="/home" component={Home} />
            <Route exact path="/detail" component={Detail} />
            {/* <Route path="/detail" component={Test}  />   */}
            <Redirect to="/index" component={Index} />
          </Switch>
        </Content>
      </Body>
    </Layout>
  );
}
export default App;

三种路由的传参方式

 <Card>
            <Card.Body>首页内容</Card.Body>
            <div>
              {arr.map((item, index) => {
                return (
                  <div key={index}>
                    {/* 第一种传参match */}
                    <div style={{ cursor: 'pointer', color: 'blue' }}
                      onClick={() => {
                        props.history.push(`/index/detail/${item.id}/${item.title}`)
                      }}
                    >{item.title}</div>
                    {/* <Link to={`/index/detail/${item.id}/${item.title}`}>{item.title}</Link> */}
                    {/* 第二种传参search */}
                    {/* <Link to={`/index/detail?id=${item.id}&title=${item.title}`}>{item.title}</Link> */}
                    {/* 第三种传参state,replace不留下痕迹 */}
                    {/* <Link replace to={{ pathname: '/index/detail', state: { id: item.id, title: item.title } }}>{item.title}</Link> */}
                  </div>
                )
              })}
            </div>
            <br />
            <Route path='/index/detail/:id/:title' component={indexDetail} />
            {/* <Route path='/index/detail' component={indexDetail} /> */}
            {/* <Route path='/index/detail' component={indexDetail} /> */}
          </Card>

三种接收路由的方式

import React, { } from "react";
// import Test from "./component/Test";
import "@tencent/tea-component/dist/tea.css";
import qs from "query-string" //转换search
import Yinam from "./yiban"
function indexDetail(props) {
    console.log(props)
    const { id, title } = props.match.params
    // const { id, title } = qs.parse(props.location.search)

    // const { id, title } = (props.location.state)
    // console.log(id)
    const arr = [
        { id: '01', desc: '你好少' },
        { id: '02', desc: '洒洒水' },
        { id: '03', desc: '你好的撒范德萨范德萨范德萨少' }
    ]
    const sasa = arr.find((item) => {
        return item.id === id
    })
    const sa = { sasa: 'sasa', ddfd: 'dsa' }
    const sa1 = '?id=dsad&dsds=132'
    console.log(qs.stringify(sa))
    console.log(qs.parse(sa1))
    return (
        <div>
            <div>id:{id}</div>
            <div>title:{title}</div>
            <div>conso:{sasa.desc}</div>
            <Yinam></Yinam>
        </div>

    );
}

export default indexDetail;

两种路由的区别


企业微信截图_16517423783232.png
import React, { } from "react";
import "@tencent/tea-component/dist/tea.css";
import {withRouter} from "react-router-dom"

//withRouter 能让一般组件有路由组件的三个参数
function yibanDetail(props) {
    console.log(props)
  return (
   <div>
       一般组件
   </div>

  );
}
export default withRouter(yibanDetail);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容