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 }
我以前从未见过这种语法。这是错误吗?还是有效的语法?如果有效,请说明其含义以及工作原理。
答案 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
是一个正在使用的变量,将变量名称写入对象时,会将名称视为键,将值视为变量所持有的任何值。