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

yizhihongxing

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实现文本编译的完整攻略。 1. 理解Vue模板和编译过程 Vue框架中,模板是组件渲染的基础,它会被编译成可执行的JavaScript函数的形式。编译过程顺序为: 将模板解析成抽象语法树(Abstract Syntax Tree,AST); 对AST进行静态分析,生成可执行的渲染函数(render function); 最终渲染函数会被执行,…

    Vue 2023年5月27日
    00
  • vue3项目中封装axios的示例代码

    下面是详细讲解“vue3项目中封装axios的示例代码”的完整攻略。 一、为什么要封装axios 在我们的vue3项目开发中,经常需要进行网络请求。而axios是一个常用的网络请求库,它可以很方便地进行请求和响应的拦截,但是如果在项目中使用的过程中,每次都直接使用axios去发起请求,那么就会使得代码重复度高,不利于后期维护和拓展。因此,我们需要对axios…

    Vue 2023年5月28日
    00
  • vue单页应用的内存泄露定位和修复问题小结

    针对“vue单页应用的内存泄露定位和修复问题小结”,我们可以分为以下几个步骤来进行解决。 1. 了解什么是内存泄露 内存泄露指的是程序在运行过程中,动态分配的内存空间未被及时释放,从而导致系统的内存不断被占用,最终导致系统崩溃或者运行缓慢。尤其是前端领域,由于运行在客户端的浏览器环境中,内存泄漏更加容易发生。 2. 定位内存泄露 当我们发现系统出现内存泄漏时…

    Vue 2023年5月27日
    00
  • vue新vue-cli3环境配置和模拟json数据的实例

    下面我将给出“Vue新vue-cli3环境配置和模拟json数据的实例”的详细攻略。 环境配置 安装Node.js 在官网下载 Node.js,选择对应系统的版本进行安装。 安装Vue CLI 3 打开命令行终端,输入命令: npm install -g @vue/cli 等待安装完成即可。 创建Vue项目 创建项目 打开命令行终端,进入要创建项目的目录,输…

    Vue 2023年5月27日
    00
  • vue.js实现格式化时间并每秒更新显示功能示例

    下面是“vue.js实现格式化时间并每秒更新显示功能示例”的完整攻略。 思路分析 实现该功能需要使用Vue.js框架,其核心思路是将需要更新的时间保存在Vue实例的data中,然后利用Vue实例的响应式机制,在每秒钟更新时间的同时更新视图。 具体实现方法可以使用Vue.js提供的计算属性,或者通过Vue.js生命周期函数中的定时器实现。 计算属性实现示例 下…

    Vue 2023年5月28日
    00
  • VUE异步更新DOM – 用$nextTick解决DOM视图的问题

    VUE是一个流行的JavaScript框架,具有数据驱动和组件化的特点。然而,当我们在处理DOM视图时,有时候可能会出现异步更新的问题。这会导致我们的DOM视图没有及时更新,从而导致一些错误。在这种情况下,我们可以使用Vue提供的$nextTick方法来解决DOM视图异步更新的问题。 什么是异步更新DOM 在Vue中,组件的DOM操作是异步执行的。这意味着当…

    Vue 2023年5月29日
    00
  • mpvue全局引入sass文件的方法步骤

    下面我详细讲解在mpvue中全局引入sass文件的方法。 在mpvue中全局引入sass文件的方法步骤 步骤如下: 安装sass-loader和node-sass模块: npm i sass-loader node-sass -D 在 build/webpack.base.conf.js 中添加sass-loader配置: // build/webpack.…

    Vue 2023年5月28日
    00
  • 解决vuejs 使用value in list 循环遍历数组出现警告的问题

    首先,我们需要了解这个警告的产生原因。在 Vue.js 中,当在组件中使用 v-for 循环遍历数组时,我们需要为每一个被遍历的元素指定一个唯一的 key 值,这样才能保证 DOM 元素更新时的高效性。 然而,在使用 v-model 绑定数据时,我们通常会使用 value 属性来表示选项的值,例如: <input type="checkbox…

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