【发布时间】:2018-07-08 16:39:38
【问题描述】:
我认为 ES6 模块导出总是不可变的,所以我对我得到的行为感到很困惑。我有一个简单的颜色数组,我想在我的 Vue 应用程序的多个组件中使用它们。它在它自己的文件中,如下所示:
export const colors = [
'#ffb3ba',
'#ffdfba',
'#ffffba',
'#bae1ff',
]
然后我将它导入到我想像这样使用它的组件中:
import { colors } from '../assets/colors';
我有一个选择随机颜色的功能,然后将其从列表中删除,这样就不会为同一个组件再次选择它。是这样的。
descriptions.forEach(item => {
const colorIndex = Math.floor(Math.random() * colors.length);
item['color'] = colors[colorIndex];
colors.splice(colorIndex, 1);
});
这里的想法是从列表中选择一种随机颜色,为其分配描述,然后将其从列表中删除,以便在 forEach 的下一次迭代中选择不同的颜色。
问题是它似乎要从列表中永久删除颜色。因此,当我导入并尝试在另一个组件中使用该数组时,其中没有颜色。我怎样才能让每个组件都有一个新的 colors 数组实例?
【问题讨论】:
-
创建一个克隆,这样你就有了你的列表,然后是一个可用列表,它会根据选定或取消选定的颜色进行更新。你在导入一个数组,可以修改里面的值,但是不能重新赋值
标签: ecmascript-6 vue.js es6-modules