React-Redux-Firebase文档中的json语法异常。有效吗

时间:2018-10-08 04:07:55

标签: javascript json reactjs react-redux react-redux-firebase

The documentation to React-Redux-Firebase provides the following sample code.

import { compose } from 'redux'
import { connect } from 'react-redux'
import { firebaseConnect, populate } from 'react-redux-firebase'

const populates = [
  { child: 'owner', root: 'users' } // replace owner with user object
]

const enhance = compose(
  firebaseConnect([
    // passing populates parameter also creates all necessary child queries
    { path: 'todos', populates }
  ]),
  connect(({ firebase }) => ({
    // populate original from data within separate paths redux
    todos: populate(firebase, 'todos', populates),
    // firebase.ordered.todos or firebase.data.todos for unpopulated todos
  }))
)

export default enhance(SomeComponent)

我特别关注以下内容:

{ path: 'todos', populates }

我以前从未见过这种语法。这是错误吗?还是有效的语法?如果有效,请说明其含义以及工作原理。

2 个答案:

答案 0 :(得分:1)

这是新的ES6语法。基本上,如果populates'abc'(仅作为示例),则

{ path: 'todos', populates }

表示

{ path: 'todos', populates: 'abc' }

但是,populates可以是可以在对象内部使用的任何有效值。

因此,在您的特定情况下,它将转换为:

{
 path: 'todos',
 populates: [{
  child: 'owner',
  root: 'users'
 }]
}

参考:https://ariya.io/2013/02/es6-and-object-literal-property-value-shorthand

答案 1 :(得分:1)

是的,这是es6中的有效语法

{ path: 'todos', populates }

这基本上翻译成

{ 
   path: 'todos',
   populates:  [
     { child: 'owner', root: 'users' }
   ]
}

请注意,populates是一个正在使用的变量,将变量名称写入对象时,会将名称视为键,将值视为变量所持有的任何值。