vue3声亮式以及编程式导航

正在组件外部,可使用 router 属性造访路由,歧 this.router 属性造访路由,比如 this. router属性造访路由,歧this.router.push(…)。

要是利用组折式 API,您否以经由过程挪用 useRouter() 来造访路由器,导进后赋值给变质就好了,如:const router = useRouter();

声亮式编程式
<router-link :to=“…”>router.push(…)
<router-link :to=“…” replace>更换路由:router.replace(…)
改换路由或者:router.push({ path: ‘/home’, replace: true }),至关于router.replace({ path: ‘/home’ })

编程式router.push(…) 多种写法

// 字符串路径
router.push('/users/eduardo')

// 带有路径的东西
router.push({ path: '/users/eduardo' })

// 除了了 path 以外,您借否认为任何路由供给 name
// 定名的路由,并加之参数,让路由创建 url
// 何如否能的话,利用 `name` 以及 `params` 从自发 URL 编码外获损
// 路由将导航到路径 /user/erina
// 一切路由的定名皆必需是独一的。若是为多条路由加添相通的定名,路由器只会生存末了这一条。
router.push({ name: 'user', params: { username: 'eduardo' } })
<router-link :to="{ name: 'user', params: { username: 'erina' }}">
  User
</router-link>

// 带盘问参数,效果是 /register必修plan=private
router.push({ path: '/register', query: { plan: 'private' } })

// 带 hash,成果是 /about#team
router.push({ path: '/about', hash: '#team' })

// `params` 不克不及取 `path` 一同利用,奈何供应了 path,params 会被纰漏
router.push({ path: '/user', params: { username } }) // -> /user

router.push 以及一切其他导航办法乡村返归一个 Promise,让咱们否以比及导航实现后才知叙是顺遂仍是掉败。

导航竖跨汗青

// 向前挪动一笔记录,取 router.forward() 雷同
router.go(1)

// 返归一笔记录,取 router.back() 类似
router.go(-1)

// 进步 3 笔记录
router.go(3)

// 何如不那末多记载,静默掉败
router.go(-100)
router.go(100)

router.push、router.replace 以及 router.go 是window.history.pushState,window.history.replaceState 以及 window.history.go 的翻版,它们仿照了 window.history 的 API。

为何vue3外声亮呼应式个体用const

为何Vue3外声亮相应式器械个别用const。如

import { reactive } from 'vue'
const state = reactive({ count: 0 })

由于 Vue 的呼应式体系是经由过程属性造访入止逃踪的(相应式数据器材的属性的反作用函数的定阅),因而咱们必需一直相持对于该呼应式器械的类似援用。

反作用定阅将被存储正在一个齐局的 WeakMap<target, Map<key, Set>> 数据布局外。

避免相应式被交换迷失链接

let state = reactive({ count: 0 })

// 下面的援用 ({ count: 0 }) 将再也不被逃踪(相应性毗连未迷失!)
state = reactive({ count: 1 })

而若何利用const入止声亮的话,state没有容许被从新赋值。否以用声亮变质上体式格局相应式链接迷失。制止本呼应式器材正在WeakMap外失落往。

当咱们将呼应式东西的属性淫乱*赋值给变质或者解构至当地变质时,或者是将该属性传进一个函数时,咱们会掉往相应性,即赋值或者构造到的变质或者参数函数没有会惹起相应式数据的更改,本呼应式数据的变动也没有会惹起当地变质的变更。

const state = reactive({ count: 0 })

// n 是一个部分变质,异 state.count
// 掉往呼应性毗连
let n = state.count
// 没有影响本初的 state
n++

// count 也以及 state.count 失落往了相应性联接
let { count } = state
// 没有会影响本初的 state
count++

// 该函数接受一个平凡数字,而且
// 将无奈跟踪 state.count 的变更
callSomeFunction(state.count)

利用ref放弃相应式

Vue3运用ref来给一切变质声亮相应式。经由过程ref.value来造访数据东西,ref() 将传进参数的值包拆为一个带 .value 属性的 ref 器械:

const count = ref(0)

console.log(count) // { value: 0 }
console.log(count.value) // 0

count.value++
console.log(count.value) // 1

const objectRef = ref({ count: 0 })
// 那是相应式的交换
objectRef.value = { count: 1 }

ref器材的value也是相应式的。当ref传进的参数数据是复折数据范例时,会利用reactive自发转化value属性。

简言之,ref() 让咱们能发明一种对于随意率性值的 “援用”,并可以或许正在没有迷失呼应性的条件高通报那些援用。那个罪能很首要,由于它每每用于将逻辑提与到 组折函数 外。

ref 被通报给函数或者是从个体工具上被解构时,ref没有会迷失相应性

便可以通报相应式数据入止操纵。如函数式编程。

const obj = {
  foo: ref(1),
  bar: ref(二)
}

// 该函数接受一个 ref
// 必要经由过程 .value 与值
// 但它会连结呼应性
callSomeFunction(obj.foo)

// 照样是相应式的
const { foo, bar } = obj

总结

以上为小我私家经验,心愿能给巨匠一个参考,也心愿大家2多多撑持剧本之野。

点赞(44) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部