vue路由的传参有几种方法,vue路由组件传值

  vue路由的传参有几种方法,vue路由组件传值

  本文主要介绍Vue路由组件传输的八种方式。这篇文章给你做了非常详细的介绍,对你的学习或者工作有一定的参考价值。有需要的朋友可以参考一下。

  在开发单页面应用时,我们有时需要输入某条路线,根据参数从服务器获取数据。然后,我们必须首先获取路由所传输的参数,从而完成服务器请求。因此,我们需要了解几种路由参数的方法。以下方式同vue-router@4。

  

编程式路由传参

  除了使用router-link创建一个标签来定义导航链接,我们还可以使用router的实例方法,通过编写代码来实现这一点。

  

1. 通过 params 传递

  路由配置

  该路径由冒号表示:

  常量路由=[

  //动态段以冒号开头

  {路径:详细信息/:id ,名称:详细信息,组件:详细信息},

  ]

  router.push()方法的参数可以是字符串路径,也可以是描述地址的对象。

  const Home={

  模板: div @ click= to Details to Details/div ,

  方法:{

  toDetails() {

  //字符串路径

  这个。$router.push(/details/001 )

  //带有路径的对象

  这个。$ router . push({ path:/details/001 })

  //命名路由。配置路由时,名称字段是必需的。

  这个。$router.push({ name: details ,params: { id: 001 } })

  }

  }

  }

  请注意,如果提供了路径,参数将被忽略:

  //`params 不能与` path 一起使用。

  router.push({ path: /details ,params:{ id: 001 } })///-/details

  获取组件数据

  当一个路由被匹配时,它的params值将以如下形式公开。每个组件中的route.params。

  常量详细信息={

  template: div details { { $ route . params . id } }/div ,

  已创建(){

  //侦听路由更改

  这个。$watch(

  ()=这个。$route.params,

  (toParams,previousParams)={

  //响应路线更改.

  }

  )

  },

  }

  

2. 通过 query 传递

  这种情况下,查询传递的参数会显示在url之后,比如:/details/001?种类=汽车.

  路由配置

  使用查询时,以下三种方式是可行的:

  这个。$router.push(/details/001?种类=汽车’)

  这个。$ router . push({ path:/details/001 ,查询:{ kind: car }})

  这个。$router.push({ name: details ,params: { id: 001 },query: { kind: car })

  

组件获取数据

  组件是通过$route.query获得的:

  常量详细信息={

  template: div details { { $ route . query . kind } }/div ,

  已创建(){

  //侦听路由更改

  这个。$watch(

  ()=这个。$route.query,

  (toParams,previousParams)={

  //响应路线更改.

  }

  )

  },

  }

  为了响应同一个组件中参数的变化,您可以简单地观察watch $route对象上的任何属性,在这个场景中就是$route.query。

  

3. 通过 hash 传递

  这样url路径就有了哈希,比如:/details/001#car。

  路由配置

  使用hash时,以下三种方法是可行的(同查询):

  这个。$router.push(/details/001#car )

  这个。$ router . push({ path:/details/001 ,hash: #car})

  这个。$router.push({ name: details ,params: { id: 001 },hash: car})

  

组件获取数据

  组件通过$route.hash.slice(1)获得:

  常量详细信息={

  template: div details { { $ route . hash . slice(1)} }/div ,

  }

  

通过 props 进行传递

  在组件中使用$route将与路由紧密耦合,这限制了组件的灵活性,因为它只能用于特定的URL。虽然这不一定是坏事,但是我们可以通过道具配置来去除这种行为。

  Props用于以解耦的方式传递参数,主要在路由配置中。

  1.布尔模式

  当props设置为true时,route.params将被设置为组件的props。

  例如,以下代码通过$route获取动态字段id:

  const User={

  模板: div user { { $ route . params . id } }/div

  }

  const routes=[{ path: /user/:id ,component: User }]

  用props的形式替换上面的代码,如下:

  const User={

  Props: [id],//通过组件中的Props获取id

  模板:“divUser {{ id }}/div”

  }

  //在路由配置中,添加props字段,并将值设置为true。

  const routes=[{ path: /user/:id ,component: User,props: true }]

  注意:对于具有命名视图的路线,您必须为每个命名视图定义属性配置:

  常量路由=[

  {

  路径:“/user/:id”,

  组件:{默认:用户,侧栏:侧栏},

  //为用户提供道具

  props: { default: true,sidebar: false }

  }

  ]

  2.对象模式

  当道具是一个对象时,它将被设置为组件道具。道具在静止的时候是有用的。

  路由配置

  常量路由=[

  {

  路径:“/hello”,

  组件:你好,

  道具:{ name:世界 }

  }

  ]

  从组件获取数据。

  const Hello={

  道具:{

  名称:{

  类型:字符串,

  默认值:“Vue”

  }

  },

  模板:“div Hello {{ name }}/div”

  }

  Hello/组件默认显示hellowue,但是路由是用props对象配置的。当路由跳转到/hello时,会显示传递的名称,页面显示为Hello World。

  3.功能模式

  你可以创建一个返回道具的函数。这允许您将参数转换为其他类型,将静态值与基于路径的值相结合,等等。

  路由配置

  使用函数模式时,返回props的函数接受的参数是路由记录route。

  //创建一个返回属性的函数

  const dynamicPropsFn=(route)={

  return { name: route.query.say !}

  }

  常量路由=[

  {

  路径:“/hello”,

  组件:你好,

  道具:dynamicPropsFn

  }

  ]

  

组件获取数据

  当网址为/hello?当say=World时,{name: World!将作为道具传递给Hello组件。

  const Hello={

  道具:{

  名称:{

  类型:字符串,

  默认值:“Vue”

  }

  },

  模板:“div Hello {{ name }}/div”

  }

  页面将呈现为:

  注意:请尽量保持props函数的无状态,因为它只有在路线改变时才会起作用。如果您需要状态来定义props,请使用包装器组件,以便vue可以对状态变化做出反应。

  

其他方式

  1.穿过Vuex

  1.存储存储状态;

  2.组件改变了存储中的状态;

  3.b组件从商店获得。

  2.通过前端本地存储等。

  1.本地存储;

  2.会话存储;

  3.IndexedDB

  4.Web SQL

  5.饼干.

  以上就是本文关于Vue路由组件传输的八种方式。有关Vue路由组件传输的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: