2016-07-21 15 views
1

Ich benutze Meteor 1.3.5 und React 15.1.0 und versuche den richtigen Weg zum Laden und Abonnieren von Daten aus MongoDB zu verstehen.Wie lade ich Daten mit Meteor und React?

Im Moment mache ich das in createContainer mit Params, und habe Probleme beim Warten auf die Daten verfügbar zu sein.

Sollte ich Zustände anstelle von Stützen verwenden und die Daten in componentWillMount oder componentWillMount laden? Diese haben bei mir bisher nicht funktioniert. Ich habe auch versucht, mit getMeteorData zu arbeiten, aber es macht nichts, wenn die Komponente rendert.

Ich bin auf der Suche nach einer Lösung, die die Komponente aktualisiert, wenn neue Daten kommen. Dank

import React, {Component, PropTypes} from "react"; 
import ReactDOM from "react-dom"; 
import { createContainer } from "meteor/react-meteor-data"; 


export default class UsersComponent extends Component{ 

    render(){ 
    let users = this.props.users; 
    console.log(users); 

    return (
     <div> 
     { 
      (users)? 
      (users.map((user, i) => (
       <div key={user._id}> 
       <p>{user.name}</p> 
       </div> 
      ))) 
      : null 
     } 
     </div> 
    ) 
    } 
} 


UsersComponent.propTypes = { 
    users: PropTypes.array.isRequired, 
} 

export default createContainer(({ params }) => { 

    return { 
    users: Meteor.users.find().fetch(), 
    }; 
}, UsersComponent); 
+0

Könnten Sie mehr darüber ausarbeiten, was das Problem ist, das Sie haben? createContainer sollte die Daten für Ihre UsersComponent verfügbar machen, sobald die Daten bereit sind. Hast du die Benutzerdaten auf dem Server veröffentlicht? – fmilani

Antwort

0

Vermeiden state Daten mit Meteor verwalten Reagieren der Verwendung. Erstellen Sie stattdessen zustandslose funktionale Komponenten, die nur props verwenden. Lesen Sie diese:

Diese UI-Komponente leicht wiederverwendbar macht, unabhängig davon, wie Sie Daten laod.

Um zu verstehen, wie (reaktive) Daten zu laden, ist es nützlich, das Konzept/den Unterschied zwischen presentational and container components zu verstehen.

Im nächsten Schritt erstellen Sie Container-Komponenten mit einer Technik Ihrer Wahl, die eine UI-Komponente umschließt/rendert. Meteorführer createContainer ist der De-facto-Ansatz für jetzt. Es gibt auch andere Optionen wie Mantra (manche sagen besser, aber komplexer).