Vue-组件

1.组件定义

  1. 定义组件并引用

  2. 父组件向子组件传值

  3. 子组件向父组件传值

组件间传值:vuex


1.1 什么是组件
  • Html中有组件,是一段可以被复用的结构代码
  • Css中有组件,是一段可以被复用的样式
  • Js中有组件,是一段可以被复用的功能
  • Vue中的组件,指的就是一个模块,是一个独立的,完整的(包含html,cssm,js等),可以直接拿来用
1.2 组件特性
  • 组件的实例化对象,跟vue实例化对象一样,因此,我们也可以将vue实例化对象看成组件

  • 组件间是独立的,因此数据要独立存储,方法要独立定义, **彼此间不能共享 **。


2.父组件向子组件传值

2.1 components/Child.vue 定义子组件
<template>
	<div style="color: red">
        <h1>子组件内容</h1> 
        <p>{{data}}</p> 
    </div> 
</template> 
<script> 
    export default { 
        props: ['data'], // 接收父组件给子组件定义的属性 
    } 
</script>

子组件要使用父组件的数据,只需要一步,在 props中接收父组件的属性

2.2 components/Father.vue 定义父组件
<template> 
	<div> 
    	<h1>父组件内容</h1> 
    	父组件显示:{{msg}} 
    	<!--3.第三步:把父组件的某一个属性传递给子组件--> 
    	<Child :data='msg' ></Child> 
    </div>
</template> 
<script> 
    // @指定的是src路径 
    import Child from '@/components/Child' 
    // 1.第一步:在父组件中导入子组件 
    export default { 
        // 2.第二步:父组件中注册子组件 
        components: { 
            Child 
        },
        data() { 
            return { 
                msg: '父组件的信息' 
            } 
        },
        methods: { 
            
        } 
    } 
</script>

components注册子组件

2.3 router/index.js 中注册路由
import Father from '@/components/Father' 
// @修饰符指的是 src目录 
export default new Router({ 
    routes: [{ 
        path: '/component', 
        name: 'Father',
        component: Father 
    },]
})

子组件中可以通过 定义 props 属性来接收父组件的数据

3.子组件向父组件传值

3.1 components/Child.vue 子组件通过触发方法, 向父组件传值
<template>
    <div>
        <h1>子组件页面</h1>
        <span>子组件{{data}}</span>
        <button @click="f1">调用父</button>
    </div>
</template>

<script>
export default {
    //用props接收父组件的属性
    props:['data'],
    methods:{
        // 接收父组件给子组件定义的属性 
        f1(){
         //1.子组件调用父组件方法,并传值 
// $emit 触发当前实例上的事件,也可以简单的理解为触发父组件上的事件(向上冒泡)
            this.$emit('changeMsg','子的信息')
        }
    }

}
</script>
3.2 components/Father.vue给子组件添加事件及事件处理方法
<template>
    <div>
        <h1>父组件页面</h1>
        {{msg}}
        <Child :data='msg' @changeMsg='f2'></Child>
    </div>
</template>

<script>
import Child from '@/components/Child'
export default {
    components:{
        Child
    },
    data(){
        return{
            msg:'父的数据'
        }
    },
    methods:{
        // 在父组件中定义一个f2方法,可以在子组件中触发并传值给父组件 
        f2(data){
            // data接收是子组件中传递的数据
            this.msg = data// 更新父组件的内容 
        }
    }
}
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值