Vue computed计算属性

2021-11-12  本文已影响0人  mage1160

<body>

<script src="../libs/vue.js"></script>

<div id="app">

    <!--可读性不强-->

    {{message.split("").reverse().join("")}}

    <br>

    <!--每次都需要计算-->

    {{reverseMessage()}}

    {{reverseMessage()}}

    <br>

    <!--响应式依赖进行缓存-->

    {{reverseMsg}}

    {{reverseMsg}}

    <br>

    {{calculate}}

    {{getFullName}}

    {{getFullName = 'Alice Xiaosu'}}

</div>

<script>

    new Vue({

        el: '#app',

        data: {

            message: 'Hello Vue.js',

            array: [1, 3, 4, 6, 7, 10, 3, 5]

        },

        computed: {

            reverseMsg() {

                console.log('=====reverseMsg=====')

                return this.message.split('').reverse().join('')

            },

            calculate() {

                var list = this.array.filter((item) => {

                    return item % 2 === 0

                })

                return list

            },

            getFullName: {

                //getter

                get() {

                    return this.firstName + this.lastName;

                },

                //setter

                set(val) {

                    //Alice Xiaosu

                    //分割

                    var value = val.split(' ')

                    this.firstName = value[0];

                    this.lastName = value[1];

                }

            }

        },

        methods: {

            /*方法写在methods*/

            reverseMessage() {

                console.log("=====reverseMessage=====")

                //methods里拿data的数据

                /*

                * item 数组里的数据

                * index 索引

                * data 数据源

                * */

                // return 如果是true  放到数组里, false  从数组里移除

                const result = this.array.filter((item, index, data) => {

                    console.log(item)

                    console.log(index)

                    console.log(data)

                    return item >= 5

                })

                console.log('array', this.array)

                console.log('result', result)

                this.array.filter((item) =>

                    item >= 5

                )

                return this.message.split('').reverse().join('')

            }

        },

    })

</script>

</body>

点击侦听器属性

计算和方法的区别:

我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。

上一篇下一篇

猜你喜欢

热点阅读