React-Redux-Firebase 文档中不寻常的 json 语法。有效吗?
Unusual json syntax in React-Redux-Firebase documentation. Is it valid?
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 }
我以前从未见过这种语法。这是一个错误吗?或者它是有效的语法吗?如果有效,请解释其含义和工作原理。
这是新的 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
是的,这是 es6 中的有效语法
{ path: 'todos', populates }
基本上,这转化为,
{
path: 'todos',
populates: [
{ child: 'owner', root: 'users' }
]
}
注意,populates
是一个正在使用的变量,把变量名写在object中,把name当作key,value随便什么,变量就持有。
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 }
我以前从未见过这种语法。这是一个错误吗?或者它是有效的语法吗?如果有效,请解释其含义和工作原理。
这是新的 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
是的,这是 es6 中的有效语法
{ path: 'todos', populates }
基本上,这转化为,
{
path: 'todos',
populates: [
{ child: 'owner', root: 'users' }
]
}
注意,populates
是一个正在使用的变量,把变量名写在object中,把name当作key,value随便什么,变量就持有。