Vue传参一箩筐(页面、组件)

Vue是一款流行的前端框架,组件和页面之间传递数据是很常见的需求。本篇文章就来分享一些Vue传参的实践经验。

传递基础数据类型

在组件中使用props

使用props属性可以从父组件向子组件传递数据。在子组件的<script>标签中定义一个对象,对象的key就是数据的属性名,value就是数据的默认值:

<template>
  <div>{{ message }}</div>
</template>

<script>
export default {
  props: {
    message: {
      type: String,
      default: "Hello World"
    }
  }
}
</script>

在父组件中把message属性赋上数据即可进行传递:

<template>
  <child message="Hi there!"></child>
</template>

<script>
import Child from "./Child.vue"

export default {
  components: {
    Child
  }
}
</script>

这样就可以把数据传递到Child组件中并显示出来了。

在页面中传递数据

在Vue页面中传递数据比在组件中简单,直接使用data属性即可:

<template>
  <div>{{ message }}</div>
</template>

<script>
export default {
  data() {
    return {
      message: "Hello World"
    }
  }
}
</script>

在Vue页面中也可以很方便地通过计算属性和方法来传递数据,这里就不再赘述。

传递复杂数据类型

在组件中使用prop类型定义问题

在组件中传递复杂数据类型时,定义props时必须指定数据类型,否则Vue会抛出警告。props可以定义多个属性,这样就可以传递复杂数据类型了。

<template>
  <div>
    {{ message }}
    <ul>
      <li v-for="(item, index) in items" :key="index">{{ item }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  props: {
    message: {
      type: String,
      default: "Hello World"
    },
    items: {
      type: Array,
      default: function() {
        return []
      }
    }
  }
}
</script>

父组件中的传递方式也需要相应地更改:

<template>
  <child :message="msg" :items="list"></child>
</template>

<script>
import Child from "./Child.vue"

export default {
  components: {
    Child
  },
  data() {
    return {
      msg: "Hi there!",
      list: ["item1", "item2", "item3"]
    }
  }
}
</script>

在组件中使用类似于 Vuex 的 store

当组件之间需要共享数据时,可以使用类似于 Vuex 的 store。在store中定义数据后,可以通过组件中的computed属性获取store中的数据。

// store.js
import Vue from "vue"
import Vuex from "vuex"

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    message: "Hello Vuex"
  }
})

// Child.vue
<template>
  <div>{{ message }}</div>
</template>

<script>
import { mapState } from "vuex"

export default {
  computed: mapState([
    "message"
  ])
}
</script>

// App.vue
<template>
  <child></child>
</template>

<script>
import Child from "./Child.vue"
import store from "./store"

export default {
  components: {
    Child
  },
  store
}
</script>

在这个示例中,store中的statemessage属性被映射到了Child组件的message属性中。

以上便是Vue传参的基本攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue传参一箩筐(页面、组件) - Python技术站

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

相关文章

  • vue如何通过日期筛选数据

    下面是Vue如何通过日期筛选数据的完整攻略。 步骤一:引入moment.js库 为了便于处理日期,我们可以使用moment.js库。在Vue项目中,我们可以使用npm进行安装: npm install moment –save 接着,在需要使用日期筛选的页面或组件中,引入moment库: import moment from ‘moment’; 步骤二:设…

    Vue 2023年5月29日
    00
  • 关于iview和elementUI组件样式覆盖无效问题及解决

    让我来为您详细讲解“关于iview和elementUI组件样式覆盖无效问题及解决”的完整攻略。 问题描述 在使用iview或elementUI组件库时,我们经常需要根据自己的业务需求进行组件样式定制,但是遇到样式覆盖无效的情况,让我们感到十分困惑。这种情况下,我们需要仔细分析问题所在,并采取相应的解决措施。 问题分析 针对样式覆盖无效的问题,我们可以从以下几…

    Vue 2023年5月28日
    00
  • 解决vue打包报错Unexpected token: punc的问题

    针对”Unexpected token: punc”的问题,我们可以采取以下几个步骤来解决: 步骤一:检查代码语法 在报错中”Unexpected token” 意味着代码中有一些语法错误,如缺少分号、括号、引号、大括号等等。因此,我们需要先检查代码语法是否正确。 可以采用下面这个命令来检测代码语法: npm run lint 当然,如果项目中没有安装esl…

    Vue 2023年5月28日
    00
  • 浅谈基于Vue.js的移动组件库cube-ui

    浅谈基于Vue.js的移动组件库cube-ui 介绍 cube-ui是一个基于 Vue.js 的移动端组件库。它提供了很多常用的移动端 UI 组件,可以快速构建高质量的移动应用。cube-ui 在使用上都使用单文件组件,非常适合 Vue.js 开发者。它是由滴滴出行开源的。 安装 先使用npm安装vue-cli,再使用vue-cli构建项目 $ npm in…

    Vue 2023年5月28日
    00
  • vue.js实现图片压缩封装方法

    下面我来详细讲解vue.js实现图片压缩封装方法的完整攻略。 1. 前置知识 在开始编写图片压缩封装方法之前,需要掌握以下前置知识: JavaScript基础知识 Vue.js基础知识 HTML5中的Canvas API 2. 实现步骤 下面是实现图片压缩封装方法的步骤: 2.1. 安装插件 首先需要安装compressorjs插件,该插件可以实现图片压缩的…

    Vue 2023年5月28日
    00
  • Vue程序调试的方法

    下面是Vue程序调试的完整攻略,包含以下内容: 使用Chrome浏览器的开发者工具进行调试 使用Vue.js官方提供的调试工具Vue.js DevTools 在代码中使用console.log()进行调试 使用断点进行逐行调试 1. 使用Chrome浏览器的开发者工具进行调试 Chrome浏览器的开发者工具内置了强大的调试工具,可以方便地调试Vue程序。在使…

    Vue 2023年5月27日
    00
  • js中less常用的方法小结

    JS中Less常用的方法小结 1. Less和CSS变量 我们都知道,CSS中 var() 函数是用来引用自定义变量的。在Less中,我们可以使用和CSS类似的方式来定义和使用变量。下面是Less的变量定义示例: @base-color: #666; body { color: @base-color; background-color: lighten(@…

    Vue 2023年5月28日
    00
  • 解决vue数组中对象属性变化页面不渲染问题

    下面是针对“解决vue数组中对象属性变化页面不渲染问题”的完整攻略: 问题背景 使用Vue的开发者肯定知道,当我们在vue组件中有一个数组,其中包含多个对象,而对象的属性发生变化时,页面并不会自动渲染。这是因为Vue根据需求,只会追踪到绑定的属性,而不会追踪到对象本身。 比如我们有如下示例代码: <template> <div> &l…

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