javascript - 如何在 Vue 2 中设置组件非 react 性数据?

标签 javascript vue.js components vuejs2

我有一个类别数组,它被加载一次(在创建的钩子(Hook)中),然后它一直是静态的。我在组件模板中呈现这些数组值。

<template>
    <ul>
        <li v-for="item in myArray">{{ item }}</li>
    </ul>
</template>

我的数据属性看起来(它不包括 myArray - 我不想要响应式(Reactive)绑定(bind)):

data() {
    return {
        someReactiveData: [1, 2, 3]
    };
}

我的创建钩子(Hook):

created() {
    // ...
    this.myArray = ["value 1", "value 2"];
    // ...
}

问题是,Vue 抛出错误 - 我不能在模板中使用 myArray,因为这个变量不是在创建 DOM 时创建的 - 挂载。

那么如何做到这一点呢?或者组件常量可以存放在哪里?

最佳答案

Vue 将 data 选项中的所有属性设置为 setters/getters 以使它们具有反应性。参见 Reactivity in depth

因为您希望myArray 是静态的,您可以将其创建为自定义选项,可以使用vm.$options 访问它。

export default{
    data() {
        return{
            someReactiveData: [1, 2, 3]
        }
    },
    //custom option name myArray
    myArray: null,
    created() {
        //access the custom option using $options
        this.$options.myArray = ["value 1", "value 2"];
    }
}

您可以按如下方式在模板中迭代此自定义选项:

<template>
    <ul>
        <li v-for="item in $options.myArray">{{ item }}</li>
    </ul>
</template>

这是 fiddle

关于javascript - 如何在 Vue 2 中设置组件非 react 性数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45814507/

相关文章:

javascript - 将 forEach 循环中内置的数组数据写回原始对象

vue.js - Vue 3-Vuetify 3 : color--text not working

javascript - 如何将 JSON 中的嵌套数组拆分为 Google 表格中的表格(使用 Javascript?)

javascript - 无法使用 e.target 获取父级 div 类列表

HTML 元素样式不适用于范围样式

Delphi自定义组件,项目中涉及到tpropertyeditor时使用

javascript - 用于 HTML 讨论的 JS 组件,类似于 Google 文档

delphi - 如何从命令行安装Delphi组件包?

javascript - 填写表单的脚本比 onchange() 可以显示表单选项执行得更快

javascript - 使用 javascript 动态生成 thymeleaf 输入并将其值发送到 Controller 不起作用