美文网首页让前端飞Vue知识点
02.1 - vue 组件间传参 props

02.1 - vue 组件间传参 props

作者: 大大的小小小心愿 | 来源:发表于2018-12-06 14:57 被阅读27次

一、用法

1、父组件给子组件传参
2、数据从父组件传递给子组件,只能单项绑定。
3、在子组件内不应该修改父组件传递过来的数据。(若特殊情况需要改变,最后一栏有介绍)
父组件、子组件概念:
组件(父组件)中引入另一个组件(子组件)。

二、父组件传参给子组件 - props

1、传静态数据

1、父组件传参

<template>
  <div id="father">
      <div>我是父亲,我通过 props 给儿子传参</div>
      <!-- 三、子组件:通过占位符添加特性的方式来传参 -->
      <Son
        username="张三"
        :height="160"
        color="红色"
      ></Son>
  </div>
</template>
<script>
// 一、引入组件
import Son from '@/components/son/Son'
export default {
  name: "Father",
  data() {
    return {};
  },
//   二、在 components 中 写入组件
   components:{Son}
};
</script>
<style></style>

2、子组件拿值

<template>
  <div id="SonCat">
    <span> 我是Cat 的儿子 </span>
    <!-- 二、在 节点中显示 -->
    <p>身高:{{height}}</p><p>名字:{{username}}</p>
    <button @click="getPropsFn">点击我获取父亲传给我的参数</button>
  </div>
</template>
<script>
export default {
  name: "SonCat",
  // 一、引入参数
  props:['username','height','color'],
  data() {return {};},
    methods: {
      // 三、js中拿到值  (不可用 es6 语法,否则拿不到值)
      getPropsFn:function(){
        console.log(this.height)
      },
    },
};
</script>
<style></style>
2、传动态单数据、数字类型

1、父组件传参

<template>
  <div id="father">
      <div>我是父亲,我通过 props 给儿子传参</div>
      <!-- 四、调用子组件 ,传动态参数-->
      <Son
        :height="height"
      ></Son>
  </div>
</template>
<script>
// 一、引入组件
import Son from '@/components/son/Son'
export default {
  name: "Father",
  data() {
    //  三、设置参数
    return {height:1000};
  },
//   二、在 components 中 写入组件
   components:{Son}
};
</script>

2、子组件拿值

<template>
  <div id="SonCat">
    <span> 我是Cat 的儿子 </span>
    <!-- 二、在 节点中显示 -->
    <p>身高:{{height}}</p>
    <button @click="getPropsFn">点击我获取父亲传给我的参数</button>
  </div>
</template>
<script>
export default {
  name: "SonCat",
  // 一、引入参数
  props:['height'],
  data() { return {}; },
    methods: {
      // 三、js中拿到值  (不可用 es6 语法,否则拿不到值)
      getPropsFn:function(){
        console.log(this.height)
      },
    },
};
</script>
<style></style>
3、传动态数据表

三、props 详解

一、props验证:如果传入的数据不符合规格,Vue会发出警告。

prpos 要指定验证规格,需要用对象的形式,而不能用字符串数组

props:{
   // height:Number
   height:Array
 },


`type 可以是下面原生构造器:`
String
Number
Boolean
Function
Object
Array
Symbol

二、修改prop数据

一般情况子组件拿到 父亲传的 props 值直接显示数据,也有少数需在 子组件修改参数。
子组件中修改prop中的数据,通常有以下两种原因

1、prop 作为初始值传入后,子组件想把它当作局部数据来用
2、prop 作为初始值传入,由子组件处理成其它数据输出
1、在子组件定义的局部变量接受props值 (Son 组件)

注:只能接受 props 传的初始值,当父组件要传递的值发生变化时,dataHeight无法接收到最新值

<template>
  <div id="SonCat">
    <span> 我是Cat 的儿子 </span>
    <p>身高:{{height}}</p>
    <!-- 三、页面显示 -->
    <p>初始值:{{dataHeight}}</p>
    <button @click="getPropsFn">打印获取的父亲值</button>
  </div>
</template>

<script>
export default {
  name: "SonCat",
  // 一、引入参数
  props:['height'],
  data() {
    return {
      // 二、拿到 props 值
      dataHeight:this.height
    };
  },
    methods: {
      getPropsFn:function(){
        console.log(this.height)
      },
    },
};
</script>
<style></style>
2、使用变量储存prop的初始值,并使用watch来观察prop的值的变化。发生变化时,更新变量的值 (Son)

最常使用

<template>
  <div id="SonCat">
    <span> 我是Cat 的儿子 </span>
    <p>身高:{{height}}</p>
    <!-- 四、页面显示 -->
    <p>初始值:{{dataHeight}}</p>
    <button @click="getPropsFn">打印获取的父亲值</button>
  </div>
</template>

<script>
export default {
  name: "SonCat",
  // 一、引入参数
  props:['height'],
  data() {
    return {
      // 二、props 值传给 局部变量
      dataHeight:this.height
    };
  },
    methods: {
      getPropsFn:function(){
        console.log(this.height)
      },
    },
    // 三、监控 props 值的变化,进行下一步操作
    watch:{
      height(){
        this.dataHeight = this.height
        console.log("父亲传的值发生改变,儿子的操作开始...")
      }
    }
};
</script>
<style></style>

参考文献:https://www.cnblogs.com/xiaohuochai/p/7388866.html

相关文章

  • 02.1 - vue 组件间传参 props

    一、用法 父组件、子组件概念: 二、父组件传参给子组件 - props 1、传静态数据 1、父组件传参 2、子组...

  • SSM单体架构项目 (下)

    Vue 组件 组件导入 组件传参 props 组件传参,父组件向子组件传参 分页 引入分页组件

  • vue3 父子组件传参,provide/inject 共享方法和

    一、父组件给子组件传参 props props 用法 vue props:{ xxxx: { type: Obje...

  • Vue组件间数据传递

    前言 总结vue组件间的数据传递 路由传参 父组件传递数据给子组件---props 子组件传递数据给父组件---$...

  • vue组件之间通信

    vue父组件给子组件传参使用props子组件给父组件传参使用时间派发$dispatch兄弟组件之间传递参数使用vuex

  • Vue组件间通信

    Vue组件间通信 父子组间通信 通过props向子组件传值,通过事件向父级组件发送消息 通过props向子组件传值...

  • vue父子组件传参(异步请求数据)

    vue父子组件传参采用props方式 异步请求数据采用watch监听数据的更改

  • Vue组件通信

    Vue 组件之间的通信,通常我们遇到的都是父子组件之间的通信 一、父子组件传参 子组件定义 Props 属性; 父...

  • vue组件间传值之eventBus

    1 概述: vue组件间的传值,父子之间props 和emit; 跨组件间可以使用vuex或者eventBus; ...

  • Vue组件间通信的5种方式

    1,$emit和props (父子组件间传参,且嵌套层级少)现有parent组件和child组件1.1 父组件向子...

网友评论

    本文标题:02.1 - vue 组件间传参 props

    本文链接:https://www.haomeiwen.com/subject/bxdvoftx.html