vue路由跳转的三种方式是怎样的呢?下面就让我们一起来了解一下吧:
1、router-link,这属于实现跳转最简单的方式。
<router-link to='需要跳转到的页面的路径>
浏览器在解析时,会将它解析成一个类似于<a> 的标签。
div和css样式略
<li >
<router-link to="keyframes">点击验证动画效果 </router-link>
</li>
不要忘记了给需要跳转的路径在需要提前在router/index.js下引入。
2、this.$router.push({ path:’/user’})
常常用于路由传参,用法与第三种相似。
区别是:
1.query引入方式
params只可以用name来引入路由。
而query需要用path引入。
2.query传递方式
与ajax中get传参类似,在浏览器地址栏中显示参数。
params则类似于post,在浏览器地址栏中不显示参数。
在helloworld.vue文件中
<template>
.....
<li @click="change">验证路由传参</li>
</template>
<script>
export default {
data () {
return {
id:43, //需要传递的参数
}
},
methods:{
change(){
this.$router.push({ //核心语句
path:'/select', //跳转的路径
query:{ //路由传参时push和query搭配使用 ,作用时传递参数
id:this.id ,
}
})
}
}
}
</script>
在select.vue文件中
<template>
<select>
<option value="1" selected="selected">成都</option>
<option value="2">北京</option>
</select>
</template>
<script>
export default{
data(){
return{
id:'',
}
},
created(){ //生命周期里接收参数
this.id = this.$route.query.id, //接受参数关键代码
console.log(this.id)
}
}
</script>
当然也可以在使用的标签中通过v-if = ‘id == 1’或是else-if = 'id == 2'等进行区分拼接。
3、this.$router.replace{path:‘/’ }类似,就不做过多的介绍了。
以上就是小编的分享了,希望能够帮助到大家。
Vuex的五个属性和使用方法
Vuex 是什么?
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
一张图了解Vuex
Vuex 的五个属性及使用方法一、State
由于 Vuex 的状态存储是响应式的,从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态:
// 创建一个 Counter 组件const Counter = { template: `<div>{{ count }}</div>`, computed: { count () { return this.$store.state.count } }}
每当 this.$store.state.count 变化的时候, 都会重新求取计算属性,并且触发更新相关联的 DOM。
二、Getters
Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。
const store = createStore({ state: { todos: [ { id: 1, text: '...', done: true }, { id: 2, text: '...', done: false } ] }, getters: { doneTodos: (state) => { return state.todos.filter(todo => todo.done) } }})
import { mapGetters } from 'vuex'export default { // ... computed: { // 使用对象展开运算符将 getter 混入 computed 对象中 ...mapGetters([ 'doneTodos', // ... ]) }}
三、Mutation
更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。
const store = createStore({ state: { count: 1 }, mutations: { increment (state) { // 变更状态 state.count } }})
你不能直接调用一个 mutation 处理函数。这个选项更像是事件注册:“当触发一个类型为 increment 的 mutation 时,调用此函数。”要唤醒一个 mutation 处理函数,你需要以相应的 type 调用 store.commit 方法:
store.commit('increment')
四、Action
Action 类似于 mutation,不同在于:
让我们来注册一个简单的 action:
const store = createStore({ state: { count: 0 }, mutations: { increment (state) { state.count } }, actions: { increment (context) { context.commit('increment') } }})
Action 通过 store.dispatch 方法触发:
store.dispatch('increment')
五、Module
由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。
const moduleA = { state: () => ({ ... }), mutations: { ... }, actions: { ... }, getters: { ... }}const moduleB = { state: () => ({ ... }), mutations: { ... }, actions: { ... }}const store = createStore({ modules: { a: moduleA, b: moduleB }})store.state.a // -> moduleA 的状态store.state.b // -> moduleB 的状态
tips:
当刷新页面,项目重新加载,Vuex 会重置,所有状态回到初始状态,使用 vuex-persistedstate 可以避免这种情况发生。
1.安装
npm install --save vuex-persistedstate
2.配置
在Vuex初始化时候,作为组件引入。
import persistedState from 'vuex-persistedstate'export default new Vuex.Store({ // ... plugins: [persistedState()]})