// types.js
// 定义 getter、action、和 mutation 的名称为常量,以模块名 `todos` 为前缀
export const DONE_COUNT = 'todos/DONE_COUNT'
export const FETCH_ALL = 'todos/FETCH_ALL'
export const TOGGLE_DONE = 'todos/TOGGLE_DONE'
// modules/todos.js
import * as types from '../types'
// 使用添加了前缀的名称定义 getter、action 和 mutation
const todosModule = {
state: { todos: [] },
getters: {
[types.DONE_COUNT] (state) {
// ...
}
},
actions: {
[types.FETCH_ALL] (context, payload) {
// ...
}
},
mutations: {
[types.TOGGLE_DONE] (state, payload) {
// ...
}
}
}
在上面demo中types是es6模块,模块有三个属性DONE_COUNT、FETCH_ALL、TOGGLE_DONE,那么在声明getter和actions或者mutations时候直接写就好了,为何要带[]号呢,除了[]可以吗?好像这是ES6的计算属性结构,但又说不清楚怎么回事,如果可以最好列举几个清晰的列子说明。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
@Dont 已经回答得很详细了,我简单的补充一下
这时候 a 就是
{ hello: "world" },这是早就有的语法,好理解吧。现在为了方便初始化对象字面量,把
[]运算引入了初始化语法中,所以这里
[name]其实和a[name] = "world"中的[name]是一样的,是把name的值(表达式计算结果)作来键名(属性名)。不知道这样说会不会好理解一些呢
有变量来做key的时候必须要加[],比如var key = 'name',那么{ [key]: 'jack'} 其实是{ name: 'jack' }