vue的传参方式汇总和router使用技巧

yizhihongxing

一、介绍

Vue框架中,我们经常需要进行组件之间的传值,根据传参的方式不同,我们又可以将其分为props、$emit、vuex、router、cookie等等。其中,props与$emit的传参方式主要用于组件之间传值,其余的传参方式则主要用于组件之间以及前后端之间的数据交互。

在本篇文章中,我们将对vue的传参方式进行详细的汇总,同时也会涉及到router的使用技巧。

二、props

在Vue中,我们可以在父组件中通过props向子组件传递值。props主要分为两个部分:prop验证和使用props。

1.prop验证

当子组件通过props接收到父组件传递的数据时,我们可以设置一些验证规则以确保数据的正确性。prop验证主要有以下两种方式。

(1)类型验证

props: {
  // 基础类型检测
  propA: Number,
  // 多种类型
  propB: [String, Number],
  // 必传且为字符串
  propC: {
    type: String,
    required: true
  },
  // 带有默认值的数字
  propD: {
    type: Number,
    default: 100
  },
  // 带有默认值的对象
  propE: {
    type: Object,
    default: function () {
      return { message: 'hello' }
    }
  },
  // 自定义验证函数
  propF: {
    validator: function (value) {
      // 这个值必须匹配下列字符串中的一个
      return ['success', 'warning', 'danger'].indexOf(value) !== -1
    }
  }
}

(2)对象验证

const myObject = {
  name: String,
  age: Number
};

props: {
  obj: {
    type: Object,
    validator(value) {
      return Object.keys(value).every(key => Object.keys(myObject).includes(key)); // 第二个对象不允许有不在第一个对象上的key存在。
    }
  }
},

2.使用props

当父组件向子组件传递了值后,我们可以在子组件的template模版中通过{{prop名称}}的方式调用。

<!-- 父组件模版 -->
<template>
  <ChildComponent propA="123" :propB="456">
</template>

<!-- 子组件模版 -->
<template>
  <div>
    <div>{{propA}}</div>
    <div>{{propB}}</div>
  </div>
</template>

<!-- 子组件script中 -->
<script>
export default {
  name: 'ChildComponent',
  props: {
    propA: String,
    propB: Number
  }
}
</script>

三、$emit

与props不同,$emit主要用于子组件向父组件传值。当子组件需要向父组件传值时,我们可以在子组件的methods中使用$emit方法,从而触发父组件中的相应事件,进而实现数据的传递。

<!-- 父组件模版 -->
<template>
  <ChildComponent v-on:myevent="handleEvent"/>
</template>

<!-- 子组件模版 -->
<template>
  <button v-on:click="myClickEvent">点击</button>
</template>

<!-- 子组件script中 -->
<script>
export default {
  name: 'ChildComponent',
  methods: {
    myClickEvent(){
        this.$emit('myevent', 'hello,world');
    }
  }
}
</script>

四、vuex

随着项目的不断发展,组件之间和前后端数据的交互也会变得越来越复杂。这时候,我们需要使用状态管理来管理全局状态。在Vue框架中,我们可以使用vuex来进行状态管理。

vuex主要包含以下4个主要部分:State、Getter、Mutation和Action。

  1. State

我们可以使用State来定义数据存储的状态,state一般用来保存全局的数据。

// 存放全局的数据
const state = {
  count: 0
};
  1. Getter

当我们需要对state中的数据进行处理时,我们可以使用Getter。Getter可以对state的数据进行一些计算操作,然后返回计算后的值,而无需修改state中的实际数据。

// 获取指定的数据
const getters = {
  getCount(state) {
    return state.count
  }
}
  1. Mutation

当我们需要修改state中的数据时,我们可以使用Mutation。Mutation主要用于同步操作,当Mutation被触发时,state中的数据也会被同步更新。

const mutations = {
  increment(state) {
    state.count++
  },
  decrement(state) {
    state.count--
  }
}
  1. Action

当需要执行一些异步操作时,我们可以使用Action。Action通过提交Mutation来改变状态。

const actions = {
  async increment(context) {
    context.commit('increment')
  },
  async decrement(context) {
    context.commit('decrement')
  }
}

五、router

在实际项目开发中,随着前端单页应用的流行,我们经常需要使用router来进行页面之间的跳转。在Vue框架中,我们可以使用vue-router来进行路由管理。

1.基本路由配置

在路由管理中,我们需要首先配置路由,然后使用路由对象来进行跳转。

import Vue from 'vue';
import Router from 'vue-router';
// 组件的引入
import Main from './views/Main.vue';
import Detail from './views/Detail.vue';

Vue.use(Router);

export default new Router({
  routes: [
    {
      path: '/',
      component: Main
    },
    {
      path: '/detail/:id',     // 带有参数的跳转
      component: Detail
    }
  ]
});

2.路由跳转

当路由对象配置完成后,我们就可以使用它来进行页面跳转。我们可以在组件的js文件中使用$router.push方法来进行跳转。

// 带有参数的跳转
this.$router.push('/detail/' + this.id);

3.路由参数获取

当我们通过路由进行页面跳转后,我们需要在跳转后的页面中获取到路由参数。在Vue框架中,我们可以使用$route.params来获取路由参数。

// 获取路由参数
this.$route.params.id

六、总结

本篇文章从props、$emit、vuex和router四个方面对Vue的传参方式进行了整理,并且详细介绍了router的使用技巧。在实际项目中,我们可以根据具体需求进行选择,以便更好地进行数据流管理和页面跳转。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue的传参方式汇总和router使用技巧 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Vue.js之render函数使用详解

    下面是关于Vue.js之render函数使用的详解攻略: 什么是render函数 Render函数是Vue.js中的一项核心特性,它允许您使用JavaScript编写模板,这意味着你可以获得更多的控制和更灵活的方式来编写您的组件。 render函数的写法 在Vue.js中,Render函数使用一个函数来定义组件的渲染输出。这个函数包含一个参数——h,它是Vu…

    Vue 2023年5月28日
    00
  • vue实例的选项总结

    下面我来详细讲解一下“vue实例的选项总结”的完整攻略。 一、Vue实例的选项总结 在Vue开发中,我们通常都是通过创建Vue实例的方式来进行页面渲染、响应式数据绑定以及和Vue生命周期相关的操作。而在创建Vue实例时,我们还可以通过选项来配置Vue实例,包括数据、方法、生命周期钩子等。下面就是Vue实例的所有选项及其用法。 data: 数据选项,用于定义V…

    Vue 2023年5月27日
    00
  • 详细聊聊Vue的混入和继承

    详细聊聊Vue的混入和继承 什么是混入? 混入是一个编程技术,它可以将一个对象的所有属性复制到另一个对象上。在Vue中,混入可以用来在多个组件之间共享代码。具体来说,混入提供了一种将重复代码抽象成可重用性组件的方式,而不是从对一个组件的功能进行继承。 下面是一个示例: // 混入对象 const myMixin = { data() { return { m…

    Vue 2023年5月28日
    00
  • Vue自定义事件(详解)

    Vue自定义事件(详解) 什么是自定义事件 Vue中除了系统事件(如:click、change、input等),用户也可以自定义事件。自定义事件可以通过$emit来触发,在组件树中向上传递数据,被其它组件接收并响应处理。 如何使用自定义事件 在父组件中触发自定义事件 示例1:利用$emit触发自定义事件 <template> <div&gt…

    Vue 2023年5月28日
    00
  • Vue qiankun微前端实现详解

    Vue qiankun微前端实现详解 什么是qiankun? qiankun是一个微前端框架,可以将多个独立的前端应用聚合成一个整体并进行协同工作,达到模块化开发、独立部署、增量升级等目的。 qiankun的优势 独立部署:每个应用可以独立部署 按需加载:当访问需要的模块时才进行加载 模块复用:多个应用之间可以共享Bootstrap、jQuery等公共依赖 …

    Vue 2023年5月28日
    00
  • Vue自定义可以选择日期区间段的日历插件

    首先我们需要明确自定义可以选择日期区间段的日历插件的功能需求: 显示当前月份的日历,默认选中日期为今天 允许用户选择日期区间,可以选择起始日期和结束日期 用户可以通过下拉菜单选择年份和月份 用户可以通过左右箭头切换月份,以便查看以前或以后的日期 用户选择日期区间后,插件需提供可配置的回调函数回传所选日期区间 为了实现以上需求,我们可以选择Vue.js作为前端…

    Vue 2023年5月29日
    00
  • vue-loader教程介绍

    Vue-loader教程介绍 Vue-loader是Vue.js的官方loader,通过webpack将.vue文件转换成Javascript模块的形式。Vue-loader使你可以用单文件组件的方式书写Vue组件,这大大简化了组件的开发和维护。 安装 可以使用npm来安装vue-loader: npm install -D vue-loader vue-t…

    Vue 2023年5月28日
    00
  • vue之moment的使用方式

    当我们使用 Vue.js 时,我们必须经常处理日期和时间的问题。而 Moment.js 是一个非常流行的 JavaScript 库,可以帮助我们处理日期和时间,因此 Moment.js 与 Vue.js 往往被一起使用。 使用 Moment.js 需要进行以下步骤: 步骤1:安装 Moment.js 我们可以通过 npm 来安装 Moment.js: npm…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部