有人可以向我解释这是什么吗?
[blog.id]: blog
我假设它正在创建一个blog.id
作为元素(示例ID /密钥为4)的新数组,而Blog是与该元素相等的内容集。
export default function(state = {}, action) {
switch (action.type) {
case FETCH_BLOG:
const blog = action.payload;
return { ...state, [blog._id]: blog };
case FETCH_BLOGS:
return { ...state, ...mapKeys(action.payload, '_id') };
default:
return state;
}
}
答案 0 :(得分:2)
这是一个计算的属性密钥:Computed property names (ES2015)和Object Spread Syntax。
它将创建一个新对象,其中包含state
具有的所有键/值(...state
的作用),其键的名称是属性blog._id
的分辨率,其值是blog
。
因此,如果blog._id
是"foo"
,而blog
是"bar"
,
返回的对象是:
{
"all": "the",
"key": "vals",
"state": "had",
// along with the new key/val
"foo": "bar"
}
答案 1 :(得分:0)
这是新的更方便的ES6语法:
a
a
a
as
as
as
add
add
add
这不起作用:
c:\srv> node
> blog = {_id:42}
{ _id: 42 }
但将其包含在> {blog._id: blog}
({blog._id: blog})
^
SyntaxError: Unexpected token .
中是
[]
另一种语法是dict开箱。让我们做两个变量:
> {[blog._id]: blog}
{ '42': { _id: 42 } }
您可以写
而不是> a = 1; b = 2
2
c = {a:a, b:b}
和> c = {a, b}
{ a: 1, b: 2 }
可让您从字典中复制所有属性:
...
所以这行
> {...c}
{ a: 1, b: 2 }
从return { ...state, [blog._id]: blog };
对象复制所有内容,并添加一个包含键state
和值blog._id
的字段。类似于
blog