vue-day2

发布时间 2023-04-09 22:41:36作者: JoeyBoy

绑定class样式

:class="" (v-bind的缩写)

修改vue维护的数据,而非直接操作dom

绑定style,内联样式,交给vue管理(要对象,或者数组)

font-size  ->  fontSize   换位驼峰

 

 

⭐⭐⭐vue条件渲染

v-show  底层 -> 调整style行内样式, display:none

v-if    dom节点都没了,彻底没了,没这个结构

 

选择:切换频率高,建议用v-show

 

 

template 最终渲染出来会被脱掉,注意:template只能配合v-if,不能配合v-show

好处:不用多写个div包裹<h2>破坏结构

 

 

 


⭐⭐⭐列表渲染

唯一标识也可以用index

in 也可以换成 of

 

 

重点是遍历数组!!!

key是vue在使用,在渲染为真实dom之后,dom上实际没有这个key

key原理讲解举例:特殊情况:

 

 

所以:数据的唯一标识最好由后端提供


 

列表过滤+列表排序

<div id="root">
    <h2>人员列表</h2>
    <input type="text" placeholder="搜索" v-model="keyWord">
    <button @click="sortRule = 2">按年龄升序</button>
    <button @click="sortRule = 1">按年龄降序</button>
    <button @click="sortRule = 0">默认</button>
    <ul>
        <li v-for="(item,index) in tempArr" :key="index">
            {{item.name}} - {{item.age}} - {{item.sex}}
        </li>
    </ul>
</div>
</body>
<script type="text/javascript">
    Vue.config.productionTip = false
    const vm = new Vue({
        el: '#root',
        data() {
            return {
                keyWord: '',
                sortRule: 0, // 0 默认,1 降序, 2 升序
                persons: [
                    {id: '001', name: '马冬梅', age: 18, sex: '女'},
                    {id: '002', name: '周冬雨', age: 20, sex: '女'},
                    {id: '003', name: '周杰伦', age: 14, sex: '男'},
                    {id: '004', name: '温兆伦', age: 13, sex: '男'}
                ]
            }
        },
        methods: {},
        // 基于计算属性实现
        computed: {
            tempArr() {
                const arr = this.persons.filter((p) => {
                    return p.name.indexOf(this.keyWord) !== -1
                })
                if (this.sortRule) {
                    arr.sort((p1, p2) => {
                        // 简化:三元表达式
                        if (this.sortRule === 1) {
                            return p2.age - p1.age
                        } else {
                            return p1.age - p2.age
                        }
                    })
                }
                return arr
            }
        }
    })
</script>

 

computed执行条件,computed里面所使用到的变量一旦发生变化,则computed会重新执行


 

⭐⭐⭐更新时的问题

vue检测数据的原理_对象