Vue学习之不同组件之间的消息传递

Posted twodoge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue学习之不同组件之间的消息传递相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue</title>
    <script src="vue.js"></script>
</head>
<body>

    <!-- watch监听——只能监听包含在watch中 定义 的变量
        watch: {
            msg: function (){
                //打印日志
                console.log()

            }
        }
        computed能监听在computed中所使用的所有变量
            computed: {
                msg1: function() {
                    return
                }
            }
        
        使用场景介绍,watch(一个变量/常量/数组,异步场景),computed(数据联动)
    
        如何进行拆分
        1、不超过300行
        2、复用

        组件化带来的问题:
        1、组件状态管理(vuex)
        2、多组件的混合使用,多页面,复杂业务(vue-router)
        3、组件间的传参、消息、事件管理(props,emit/on,bus)

        vue代码风格
        1、好习惯,少走坑
        2、写出自己看得懂的代码
        3、写出别人看得懂的代码

        vue-router
        1、<router-link to="/info"></router-link> 去连接到组件
        2、在router.js中定义组件
        import Info from './views/Info.vue';
        {
            path:'/info',
            name:'info',
            component:Info,
        }
        3、自己去定义组件
        <template>
            <div></div>
        </template>
        <script>
        </script>
        <style scoped>
        </style>

        vuex 
        1、单项数据流概念
        2、store.js
        {
            //组件的状态
            state: {

            },
            //改变状态的方法集
            mutations: {

            },
            actions: {

            }
        }
        https://www.imooc.com/video/18564

        vue调式方法,浏览器检查元素进入到console
        1、console.log()
        2、alert('sd')
        3、debugger //程序会运行到这里停止

        #### 开发工作流
        + 需求调研(确定需求)
        + 交互设计、逻辑设计、接口设计
        + 代码实现(1/3的时间)、测试运行(1/10)、线上部署

        git简介
        //创建空的仓库,查看本地/远程分支的
        git status
        //查看分支的情况
        git branch -a
        //创建新分支用于开发,名叫dev
        git checkout -b dev

        //把dev分支合并到master
        //首先切换到master
        git check master
        git merge dev
        //删除本地分支
        git branch -D dev
        //删除远程分支
        git push origin :dev

        //版本回退
        git reset --hard head^

        //查看log
        git reflog
        //回退到制定版本
        git reset --hard reglog的id

        打包部署
        cd 目录
        npm build 自动打包,运行完形成dist文件夹,把此文件夹放到服务器就可以访问了
        

    -->

    <!-- 此为父组件模板 -->
    <div id="root">
        <div>
            <input v-model="inputValue" />
            <button @click="handleSubmit">提交</button>
        </div>
        <ul>
            <todo-item
             v-for="(item, index) of list"
             :key="index"
             :content="item"
             :index="index"
             @delete="handleDelete"
            >
            </todo-item>
        </ul>
    </div>
    
    <script>

        //子组件
        Vue.component('todo-item', {
            props:['content','index'],
            template: '<li @click="handleClick">{{content}}</li>',
            methods:{
                handleClick: function() {
                    //向外触发一个事件
                    this.$emit('delete', this.index)
                }
            }
        })

        // var TodoItem = {
        //     template: '<li>item</li>'
        // }

        //父组件
        new Vue({
            el:"#root",
            // components:{
            //     'todo-item': TodoItem
            // },
            data:{
                inputValue: 'hello',
                list: []
            },
            methods: {
                handleSubmit: function() {
                    this.list.push(this.inputValue)
                    this.inputValue = ''
                },
                handleDelete: function(index){
                    this.list.splice(index, 1)
                }
            }
        })
    </script>
</body>
</html>

以上是关于Vue学习之不同组件之间的消息传递的主要内容,如果未能解决你的问题,请参考以下文章

vue学习之父子组件通信两种方法

Vue学习之组件小结

vue学习之父组件与子组件之间的交互

Android学习之Handler消息传递机制

Vue学习之Vuex

Android学习之AsyncTask