首页 > 解决方案 > VueJS2:我应该在 data() 中编写函数吗?

问题描述

写作功能是否data被认为是一种好习惯?我的意思不是在根组件中,而是在它的子组件中。

我问这个是因为我见过 Vue 插件vue-echarts 之一,在他们的 README.md 中使用它

<template>
<v-chart :options="polar"/>
</template>

<style>
/**
 * The default size is 600px×400px, for responsive charts
 * you may need to set percentage values as follows (also
 * don't forget to provide a size for the container).
 */
.echarts {
  width: 100%;
  height: 100%;
}
</style>

<script>
import ECharts from 'vue-echarts'
import 'echarts/lib/chart/line'
import 'echarts/lib/component/polar'

export default {
  components: {
    'v-chart': ECharts
  },
  data () {
    let data = []

    for (let i = 0; i <= 360; i++) {
        let t = i / 180 * Math.PI
        let r = Math.sin(2 * t) * Math.cos(2 * t)
        data.push([r, i])
    }

    return {
      polar: {
        title: {
          text: '极坐标双数值轴'
        },
        legend: {
          data: ['line']
        },
        polar: {
          center: ['50%', '54%']
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross'
          }
        },
        angleAxis: {
          type: 'value',
          startAngle: 0
        },
        radiusAxis: {
          min: 0
        },
        series: [
          {
            coordinateSystem: 'polar',
            name: 'line',
            type: 'line',
            showSymbol: false,
            data: data
          }
        ],
        animationDuration: 2000
      }
    }
  }
}
</script>

如果是这样,那么它将在什么时候执行?生命周期之后created()还是什么?

所以这是两个问题

  1. 它被认为是最佳实践吗?
  2. 如果有,什么时候执行?

谢谢你。

标签: vuejs2

解决方案


数据键是组件的内存。它将允许您将要跟踪的变量存储在组件内,它是组件反应性的一部分。

如果有,什么时候执行?

它将在方法之后和beforeCreate方法之前执行created

参考:https ://vuejs.org/v2/guide/instance.html#Lifecycle-Diagram

如果你想要一些特定的东西,你可以直接在你的数据函数中格式化你的数据。

您从vue-echart插件中提供的示例与

let data = []

for (let i = 0; i <= 360; i++) {
    let t = i / 180 * Math.PI
    let r = Math.sin(2 * t) * Math.cos(2 * t)
    data.push([r, i])
}

var vm = new Vue({
  data() {
    return {
      a: data
    }
  }
})

created()我个人更喜欢在创建组件的默认状态后在函数内格式化我的数据,只是为了让我的代码更简单。

请记住,data关键字也可以是一个简单的对象,但它应该是组件内部的一个函数,以避免它们在同一个 Vue 实例中复制时共享同一个对象。

这种情况没有“最佳实践”(我可能错了,但我从未见过有关它的东西),这只是两个开发人员之间可能不同的偏好

如果您想了解更多信息,请随时查看https://vuejs.org/v2/api/#datadata


推荐阅读