【问题标题】:Unusual json syntax in React-Redux-Firebase documentation. Is it valid?React-Redux-Firebase 文档中不寻常的 json 语法。它有效吗?
【发布时间】:2018-10-08 04:07:54
【问题描述】:

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 }

我以前从未见过这种语法。这是一个错误吗?或者它是有效的语法?如果有效,请解释其含义和工作原理。

【问题讨论】:

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


    【解决方案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

    【讨论】:

      【解决方案2】:

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

      { path: 'todos', populates }

      这基本上翻译成,

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

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

      【讨论】:

        猜你喜欢
        • 2013-08-26
        • 1970-01-01
        • 1970-01-01
        • 2018-12-08
        • 1970-01-01
        • 2018-05-16
        • 2017-03-14
        • 2018-11-11
        • 1970-01-01
        相关资源
        最近更新 更多