VueJS2:我应该在data()中编写函数吗?

时间:2019-06-12 10:01:31

标签: vuejs2

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. 如果是,何时执行?

谢谢。

1 个答案:

答案 0 :(得分:1)

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

  

如果是,何时执行?

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

cf: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实例中重复它们时共享相同的对象。

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

如果需要有关此data的更多信息,请随时检查https://vuejs.org/v2/api/#data