Vue 插槽,强制渲染视图,es6导入导出

71 阅读1分钟

Vue插槽使用 匿名和具名插槽

            <body>
                <div id="box">
                    <div>
                        <Child-A>
                            <h1 >我是匿名插槽</h1>
                            <h1 slot="gy1">我是A</h1>
                            <h1 slot="gy2">我是B</h1>
                        </Child-A>
                    </div>
                </div>
                <template id="child">
                    <div>
                        <!-- 匿名插槽 -->
                         <slot></slot>
                        <!-- 具名插槽 -->
                        <slot name="gy1"></slot>
                        <h1>123123</h1>
                        <slot name="gy2"></slot>
                    </div>
                </template>
                <script src="./vue.js"></script>
                <script>
                    new Vue({
                        el:'#box',
                        data:{

                        },
                        components:{
                            ChildA:{
                                template:'#child'
                            }
                        }
                    })
                </script>
                

强制渲染视图

             <div id="box">
                <ul>
                    <li v-for="(item,i) in str" :key="i" @click="del(i)"> 
                        <h1>{{item}}</h1>
                    </li>
                </ul>
                <button @click="end">添加年龄</button>
            </div>
            <script src="./vue.js"></script>
            <script>
                new Vue({
                    el:'#box',
                    data:{
                        str:[{name:'zhangsan'},{name:'lisi'}]
                    },
                    methods: {
                        end(){
                            /* 更新数据渲染视图两种方式 */
                           this.str.forEach(r=>{
                           /*直接使用Vue提供的方法this.$set */
                            /* this.$set(r,'age',30) */
                            r.age=30
                           })
                           /*添加this.$forceUpdate();进行强制渲染,效果实现*/
                           this.$forceUpdate()
                        },
                        del(i){
                             /* 删除数据渲染视图两种方式 */
                             /*this.$delete(this.str[i],'name') */
                             /*this.str.splice(i,1) */
                            delete this.str[i].name
                            this.$forceUpdate()
                        }
                    },
                })
            </script>
            

es6导入导出

html文件:

image.png

JS文件:

image.png