在创建组件之前,我的初始化数据有问题。我的实际问题取决于这个问题:我在我的一个数据属性中失去了反应性,因为我在生命周期挂钩中对其进行了初始化。但我不知道如何data(){}
用我从道具收到的长度初始化一个数组。如果我在生命周期钩子中完成它,那么我将失去反应性,正如我之前提到的。以下是有关我的组件的更多详细信息: 在我的 Vue.js 学习中,我正在尝试实现一个步进器组件。我决定让它更具动态性并具有灵活的尺寸。因此,在我的步进组件道具中,我收到了一个具有这种结构的对象:
stepperData: {
steps: 3, //maybe later I'll add more options to stepperData, so I decided to implement it as an Object, not Array of content.
content: [
{
header: "Stepper #1",
text: "Hello World 1!"
},
{
header: "Stepper #2",
text: "Hello World 2!"
},
{
header: "Stepper #3",
text: "Hello World 3!"
}
]
}
比在我的步进器组件中,我使用一个steps
字段来确定另一个数组的长度,该数组保存有关标记或未标记步骤的数据。这是我用来初始化标记步骤数组的代码:
methods: {
initializeMarkedSteps() {
this.markedSteps = [];
for (var i = 0; i < this.dataStepper.steps; i++) {
this.markedSteps[i] = false;
}
}
},
created: function() {
this.initializeMarkedSteps();
}
标记步骤是一个空数组,data(){}
因此,在那之后,我有一个错误值数组。在我的模板中,我有一个v-bind:class
<div class="circle" v-bind:class="{markedCircle: markedSteps[s]}">
多亏了它,所有步骤都没有标记,并且在用户单击“下一步”按钮后它们可以被标记。
<my-btn @click="nextStep">Next</my-btn>
my-btn 是我的简单按钮的包装组件。nextStep() 中的代码:
nextStep() {
for (let i = 0; i < this.dataStepper.steps; i++) {
if (this.markedSteps[i] === false) {
this.markedSteps[i] = true;
console.log(this.markedSteps);
return;
}
}
}
但是,当我单击按钮时,尽管单击按钮后,markedSteps[i] 的实际值已更改为 true,但并未像我预期的那样分配标记圆圈类。我对这些我搞砸的东西感到非常沮丧。任何帮助将不胜感激。我已经检查了有关此主题的文档,并且我已经阅读了“深度反应”部分,但我没有看到答案。