spencercarli/react-native-meteor-boilerplate

Issues getting Meteor data into React Native using createContainer

Closed this issue · 1 comments

version information -

"native-base": "^2.2.1",
"react": "16.0.0-alpha.12",
"react-native": "0.46.3",
"react-native-meteor": "^1.1.0",


problem statement -

how to display data using createContainer in react native when class is already exported , because exporting more than one component is not allowed.


recentPayement.js


import React, { Component } from 'react';
import {
  Text,
  View,
} from 'react-native';

import Meteor, { createContainer } from 'react-native-meteor';

sentMoneyContainer= createContainer(() => {
  Meteor.subscribe('sentMoney');
  return {
    count: Meteor.collection('send').find().length,
  };
}, RecentPayment);

export default class RecentPayment extends Component {
  render() {
    return (
        <View>
                  <Text>
                     {this.props.count} 
                  </Text>
      </View>
    );
  }
}

module.exports = RecentPayment;


items.js on meteor side-

import { Mongo } from 'meteor/mongo';
import { Meteor } from 'meteor/meteor'; // ADD THIS

const Items = new Mongo.Collection('items');
const Send = new Mongo.Collection('send');


Meteor.methods({
  'Items.addOne': ({ name }) => {
    return Items.insert({ name });
  },
  'sendmoney': (acc,amt,desc) => {
    return Send.insert({
        account:acc,
        amount:amt,
        description:desc
     });
  },

});

Meteor.publish('sentMoney', () => {
  return Send.find();
});

export default Items;


reference -

https://medium.com/@spencer_carli

Just export the wrapped component later, like so

import React, { Component } from 'react';
import {
  Text,
  View,
} from 'react-native';

import Meteor, { createContainer } from 'react-native-meteor';

class RecentPayment extends Component {
  render() {
    return (
        <View>
                  <Text>
                     {this.props.count} 
                  </Text>
      </View>
    );
  }
}

const sentMoneyContainer= createContainer(() => {
  Meteor.subscribe('sentMoney');
  return {
    count: Meteor.collection('send').find().length,
  };
}, RecentPayment);

export default sentMoneyContainer;