React服务端渲染框架Next.js入门之旅三:路由跳转和参数传递

2023-11-07

不带参数,静态路由;带参数,根据参数不同显示不同内容,动态路由。

一、路由跳转

标签式跳转

在pages下新建juanA.js以及juanB.js作为两个跳转页面。

juanA.js:

import Link from 'next/link'
export default ()=>(
    <>
        <div>juanA page</div>
        {/* 文档中规定必须放a标签,Link下只能有一个父级标签,即多个标签要用一个a标签包裹起来 */}
        <Link href='/'>
            <a>返回首页</a>
        </Link>
    </>
)

juanB.js:

import Link from 'next/link'
export default ()=>(
    <>
        <div>juanB page</div>
        {/* 必须放a标签 */}
        <Link href='/'><a>返回首页</a></Link>
    </>
)

修改index.js:

import React from 'react'
import Link from 'next/link'

const Home = ()=>(//圆括号表示只有返回值没有业务逻辑,有业务逻辑用大括号
    <>
        <div>我是首页</div>
        <div><Link href="/juanA"><a>去juanA页面</a></Link></div>
        <div><Link href="/juanB"><a>去juanB页面</a></Link></div>
    </>
)

export default Home

效果如下:

 

编程式跳转

复用性更强。
在index.js中引入router:

import Router from 'next/router'

在index.js中增加一个按钮,点击跳转到juanA页面(增加了业务逻辑goToA方法,注意修改为大括号):

const Home = () => {//圆括号表示只有返回值没有业务逻辑,有业务逻辑用大括号
    function goToA(){
        Router.push('/juanA')
    }

    return (
        <>
            <div>我是首页</div>
            <div><Link href="/juanA"><a>去juanA页面</a></Link></div>
            <div><Link href="/juanB"><a>去juanB页面</a></Link></div>
            <div>
                <button onClick={goToA}>juanA</button>
            </div>
        </>
    )
}

效果如下:

二、参数传递

Next.js框架只能用query传递参数,比如?id=1。

标签形式

传递参数

修改index.js文件:

import React from 'react'
import Link from 'next/link'

const Home = () => {//圆括号表示只有返回值没有业务逻辑,有业务逻辑用大括号

    return (
        <>
            <div>我是首页</div>
            <div>
                <Link href="/sport?name=篮球"><a>选择篮球</a></Link>
                <br/>
                <Link href="/sport?name=羽毛球"><a>选择羽毛球</a></Link>
            </div>
        </>
    )
}

export default Home

接收参数

在pages下新建sport.js文件:

import {withRouter} from 'next/router'
import Link from 'next/link'

// 只有使用withRouter才能有router的值
const Sport = ({router})=>{
    return (
        <>
            <div>{router.query.name}是我最喜欢的运动</div>
            <Link href="/"><a>返回首页</a></Link>
        </>
    )
}
export default withRouter(Sport)

效果如下:

编程形式

引入router:

import Router from 'next/router'

新增一个按钮跳转到sport页面,并编写方法传递参数,这里传递的是一个对象(也可以用带?的简单字符串):

import React from 'react'
import Link from 'next/link'
import Router from 'next/router'

const Home = () => {//圆括号表示只有返回值没有业务逻辑,有业务逻辑用大括号

    function gotoSport(){
        Router.push({
            pathname:'/sport',
            query:{name:'篮球'}
        })
        // 同以下:
        // Router.push('/sport?篮球')
    }

    return (
        <>
            <div>我是首页</div>
            <div>
                <Link href="/sport?name=篮球"><a>选择篮球</a></Link>
                <br/>
                <Link href="/sport?name=羽毛球"><a>选择羽毛球</a></Link>
            </div>
            <div>
                <button onClick={gotoSport}>选篮球</button>
            </div>
        </>
    )
}

export default Home

实现效果:

那么Link标签的形式能不能传递对象呢?当然可以。

修改篮球的Link跳转如下:

<Link href={{pathname:'/sport',query:{name:'篮球'}}}><a>选择篮球</a></Link>

运行项目,跳转成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React服务端渲染框架Next.js入门之旅三:路由跳转和参数传递 的相关文章

  • 函数式组件与类组件有何不同?

    与React类组件相比 React函数式组件究竟有何不同 在过去一段时间里 典型的回答是类组件提供了更多的特性 比如state 当有了Hooks后 答案就不再是这样了 或许你曾听过它们中的某一个在性能上的表现优于另一个 那是哪一个 很多此类
  • state和props的区别__react

    首先说明 state和props是每个组件都有的 其次 state可变 但props不可变 这是官网给出的说法 但实操过程中 state的确可变 但props也可以变 是不是fb搞错了 当然不是 这里的可变与不可变 说的是改变后 是否会重新
  • 【前端】react-markdown配置解析

    文章目录 react markdown基本配置 同步预览配置 MdEditorComponent js reducer js initBlogState js action types js sync actions js store js
  • 在校学生如何白嫖黑群辉虚拟机和内网穿透,实现海量资源的公网访问?(小白专用)

    文章目录 前言 本教程解决的问题是 按照本教程方法操作后 达到的效果是 前排提醒 1 搭建群辉虚拟机 1 1 下载黑群辉文件 vmvare虚拟机安装包 1 2 安装VMware虚拟机 1 3 解压黑 群辉虚拟机文件 1 4 虚拟机初始化 1
  • styled-components 的用法

    用于给标签或组件添加样式 给标签或组件添加样式 import styled from styled components styled button 给button标签添加样式 const Button styled button back
  • Ionic3开发教程 - 开发(2)

    Ionic3开发系列教程Ionic3开发教程 环境准备 1 Ionic3开发教程 开发 2 Ionic3开发教程 发布Android版本 3 Ionic3开发教程 发布IOS版本 4 Ionic3开发教程 更新 5 本文中介绍的Ionic3
  • chrome浏览器安装redux-devtools调试工具

    chrome浏览器安装redux devtools调试工具 1 点击进入https www chromefor com 2 在搜索框搜索redux 3 找到最新版本 Redux DevTools v2 17 0 进行下载 4 选择下载线路
  • Vite搭建react+ts项目

    创建一个react项目 首先需要打开终端 进行vite的引入 yarn create vite 使用react模板创建项目 yarn create vite react test template react cd react test y
  • 三、react中类组件和函数组件

    简介 本篇我们只要介绍react中类组件与函数组件两种组件的写法 两者的优缺点 同时对在我们的项目开发中该使用类组件还是函数组件进行思考分析 废话不多说进入正题 类组件 设计思路 类组件时面向对象编程的思想 在其中我们去设计类组件时使用st
  • React-(4)React中的事件绑定

    React中的事件绑定 在 React 组件中 每个方法的上下文都会指向该组件的实例 即自动绑定 this 为当前组件 而且 React 还会对这种引用进行缓存 以达到 CPU 和内存的最优化 在使用 ES6 classes 或者纯函数时
  • react之纯函数、函数组件、类组件、纯组件

    一 纯函数 Pure Function 定义 一个函数的返回结果只依赖于它的参数 并且在执行的过程中没有副作用 我们就把该函数称作纯函数 特点 1 函数的返回结果只依赖与它的参数 同一个输入只能有同一个输出 let foo a b gt a
  • React(一):React的设计哲学 - 简单之美

    React 一 React的设计哲学 简单之美 React 二 React开发神器Webpack React 三 理解JSX和组件 React 四 虚拟DOM Diff算法解析 React 五 使用Flux搭建React应用程序架构 Rea
  • useEffect详情用法

    1 为什么要使用useEffect 想必大家都是用过vue吧 在vue框架所写的项目中 我们通过在与后端进行数据交互的过程中 通常都是会在生命周期中进行数据的请求 然后将数据返回给页面进行渲染 在React中我们也是这样 但是在函数式组件中
  • React之state、hooks性能分析

    目录 一 state 1 为什么使用setState 2 setState异步更新 3 如何获取异步的结果 4 setState一定是异步吗 5 源码分析 6 数据的合并 7 多个state的合并 二 为什么需要Hook 三 Class组件
  • react 上传文件(多选)功能入的坑

    1 这里报错是因为onChange的this指向不对 解决方法在constructor中写 this onChange this onChange bind this 或者在绑定事件的时候写 onChange this onChange b
  • React官方文档--Lifting State Up

    Lifting State Up 如果 几个组件需要同时影响并且修改同一个数据 我们建议将这个共享状态进行提升 给他们最近的共同祖先 在这个部分 我们将要创建一个温度计算器来判断水会不会在给定温度下沸腾 我们将从一个叫做BoilingVer
  • 【react】回调函数形式的ref

    回调函数有3个特点 是我定义的函数 我没有调用这个函数 在我没有调用的情况下这个函数自己执行了 ref绑定一个箭头函数作为回调函数 可以输出以下这段看下 ref绑定的箭头函数是会自己执行的 class Demo extends React
  • umi 后台管理demo

    umi 后台管理demo umi react ts dva antd egg 有待优化 简单的前后端管理demo 接口提供增删查改 前端也有相应功能 github代码 https github com huiBuiling ql admin
  • 【React】 4课 react初识组件

    首先我们如1课创建一个文件夹在文件夹中安装react环境需要的配置文件 npm init y npm i babel standalone D npm i react react dom D 安装配置文件教程链接 https blog cs
  • react之封装有无Token(路由权限控制)的高阶组件

    TOC 前景 有些路由页面内的内容信息比较敏感 如果用户没有经过登录获取到有效Token 是没有权限跳转的 根据Token的有 无控制当前路由是否可以跳转就是路由的权限控制 技术方案 实现步骤 1 在 components 目录中 创建 A

随机推荐