Skip to content

nicolaslopezj/react-meteor-data

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

React Meteor Data

Fetch Meteor data in React using decorators

Medium Post

Installing

Install the package

meteor add orionsoft:react-meteor-data

Install the babel decorator

npm install --save-dev babel-plugin-transform-decorators-legacy

Create or update the .babelrc file in the root of your app

{
  "plugins": [
    "babel-plugin-transform-decorators-legacy"
  ]
}

### Example with publication

import React from 'react'
import {Meteor} from 'meteor/meteor'
import {withData} from 'meteor/orionsoft:react-meteor-data'
import MyCollection from './my-collection'

/**
 * Prop will be checked also in the container
 */
const propTypes = {
  itemId: React.PropTypes.string.isRequired,
  isLoading: React.PropTypes.bool,
  item: React.PropTypes.string
}

@withData(({itemId}) => {
  const handler = Meteor.subscribe('myPublication', itemId)
  const isLoading = !handler.ready()
  const item = MyCollection.findOne(itemId)
  return {isLoading, item}
})
export default class Component extends React.Component {

  render () {
    if (this.props.isLoading) return <span/>
    return (
      <div>
        {this.props.item.name}
      </div>
    )
  }

}

Component.propTypes = propTypes

### Example with method

import React from 'react'
import {Meteor} from 'meteor/meteor'
import {withMethodData} from 'meteor/orionsoft:react-meteor-data'

/**
 * Prop will be checked also in the container
 */
const propTypes = {
  itemId: React.PropTypes.string.isRequired,
  isLoading: React.PropTypes.bool,
  item: React.PropTypes.string
}

@withMethodData(({itemId}, ready) => {
  Meteor.call('getItem', itemId, ready)
})
export default class Component extends React.Component {

  render () {
    if (this.props.isLoading) return <span/>
    return (
      <div>
        {this.props.item.name}
      </div>
    )
  }

}

Component.propTypes = propTypes

// On the server
Meteor.methods({
  'getItem': function (itemId) {
    const item = Items.findOne(itemId)
    return {item} // objects returned in the method will be passed as props
  }
})

About

Fetch Meteor data in React using decorators

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published