zoukankan      html  css  js  c++  java
  • Vue3.0随记

    1.Vue3.0中的const {ref, computed} = Vue;里的ref之类的是来自runtime-core/src/index.ts的导出;而这些内容又分别来自@vue/reactivity ./apiComputed之类的;

    2.使用例子:

    <html lang="zh">
        <head>
            <meta charset="UTF-8"/>
            <!-- 注意这句话的意思类似C++的include,即将整个文件包含进来 -->
            <script src="../vue.global.js"></script>
        </head>
        <body>
            <div id="app"></div>
            <template id="root">
                <div>
                    <p>是解放路口</p>
                    <p>{{msg}}</p>
                    <input v-model="msg"/>
                    <p>{{count}}</p>
                    <!-- TODO 原来如此,只要是有经过vue处理的,无论是方法
                    {{}}还是其他的指令之类的,里面的参数啥的都是可以直接从vue里获取
                    ,所以这里count获取的就是vue里的数据
                    ,如果把@click换成标准的onclick则获取不到count值(假设全局也有add方法) -->
                    <!-- vue里方法绑定时可以写add也可以写add(..),angular则必须add(..)-->
                    <button @click="add(count)">add</button>
                    <!-- 也可以这么写,尽管方法里没有参数(外部有没有参数过来不管,我decrease不用)-->
                    <button @click="decrease($event)">decrease</button>
                    <ul>
                        <!-- 注意这里@dblclick="lala(item)"应该理解
                        为  调用绑定 方法,而非声明绑定方法,只不过这里是延时调用
                        或说是需要手动触发调用,item是实参而非形参
                        ,你把item换成常量就好理解了,比如lala(4) -->
                        <li v-for="item of list" @dblclick="laa(item)">
                            {{item}}
                        </li>
                    </ul>
                </div>
            </template>
        </body>
        <!-- 这里不管是不是module都能用上面包含进来的Vue -->
        <!-- type是module只是说里面可以用import来将其他代码包含进来,
        但是最终这些代码仍然是全都在这个页面里,但是module里import的只是在这个module里使用,其他作用域是看不到的 -->
        <script type="module">
            /* window.add = function add(params) {
                alert('sfjkl' + params);
            } */
            // 如果不这样解构赋值,也可以直接Vue.ref('...');来使用
            const {createApp, ref} = Vue;
            const root = {
                template: '#root',
                setup() {
                    console.log('sfjkl888');
                    const msg = ref('是否健康了');
                    let state = Vue.reactive({count: 0});
                    let list = ref([0, 2, 4]);
                    return {
                        msg,
                        // toRefs只能用于HTML里可以不加state.,但是对于js里还是需要的
                        // 其实js里也不需要,需要是因为没用this,因此需要通过闭包的形式
                        // 来获取count,所以要定义state,然后state.count,但是
                        // 可以不用state直接在toRefs里弄一个JSON对象然后其他地方this.count也行
                        // 但是和vue2一样,用this的话不能用箭头表达式,因为无法绑定this到组件/vue对象
                        // 比如add是箭头表达式,如果里面用了this,则add里面的this无法引用msg
                        ...Vue.toRefs(state),
                        list,
                        decrease: function(/*这里隐式有个this参数*/) {
                            this.count--;
                        },
                        laa(item) {
                            // 注意,laa属于这个匿名JSON对象,所以它的this绑定到了这个JSON对象
                            // 而add是箭头表达式,它无法绑定内部的this为其外部对象
                            // 箭头表达式的this只适用这种情况this.list.forEach(()=>{this.a})
                            // 或是this.kk = () => {this.a}
                            alert('水电费' + item + this.msg);
                        },
                        /*箭头函数隐式没有this参数,内部的this其实是闭包捕获的变量,
                        当外部没有this变量时(因为它不属于被调用的情况,而是处于声明期间,因此
                        没有this可以捕获,所以这里捕获的this变量没有,因此值是undefined*/
                        add: (event) => {
                            state.count++;
                            alert(JSON.stringify(event) + '###' + (this === undefined));
                        }
                    }
                }
            }
            createApp(root).mount('#app');
        </script>
    </html>
  • 相关阅读:
    Network Simulator for P4(NSP4) src内容介绍
    解决 E: Unable to correct problems, you have held broken packages. 问题
    【旧版本】Ubuntu 14.04 下 P416编译器 p4c的安装
    Ubuntu 14.04 更新gcc版本至4.9.2
    Ubuntu 14.04 下 安装Protocol Buffers
    Ubuntu 14.04 删除软件附加依赖
    解决Floodlight界面无法显示问题
    OpenVirteX 创建简易虚拟网络
    2017年P4中国峰会北京站 会议小结
    406. Queue Reconstruction by Height
  • 原文地址:https://www.cnblogs.com/silentdoer/p/12791988.html
Copyright © 2011-2022 走看看