2017-10-14 3 views
0

Je veux juste passer un document d'objet du conteneur à mon composant et l'utiliser. Le code de conteneur est le suivant:Comment utiliser un objet document Meteor du conteneur pour réagir au composant?

import { Meteor } from 'meteor/meteor'; 
import { withTracker } from 'meteor/react-meteor-data'; 
import { Projects } from '/imports/api/projects.js'; 
import ProjectFormUpdate from './ProjectFormUpdate.jsx'; 

export default ProjectFormUpdateContainer = withTracker(({ key1 }) => { 
Tracker.autorun(() => { 
    const sub = Meteor.subscribe('projects'); 
    if (sub.ready()){ 
     const oneProject = Projects.findOne(key1); 
     console.log(oneProject.nombre); 

    }}) 
     return { 
     oneProject, 
     }; 

})(ProjectFormUpdate); 

et je l'utilise dans mon élément de présentation sur cette voie:

render() { 
    const { oneProject, isLoading } = this.props; 
    if (!isLoading) 
    return (
     <div className="col-xs-11"> 
     <div className="box box-solid"> 
     <form className="form" onSubmit={this.handleSubmit.bind(this)} > 
     <div className="box-body"> 
        <div className="row"> 
          <div className="col-xs-2"> 
           <input 
           className = "form-control input-sm" 
           type="text" 
           ref="codigoInput" 
           placeholder="Código del Proyecto" 
           //THE PROBLEM HERE!!!!! 
           value = {this.props.oneProject.nombre} 
           onChange = {this.handleUpdate.bind(this)} 
           /> 
          </div> 
... 

Mais je reçois cette erreur: TypeError: Impossible de lire la propriété « Nombre » de non définie Le problème est en ligne:

//THE PROBLEM HERE!!!!! 
value = {this.props.oneProject.nombre} 

Répondre

0

Cela fonctionne bien une fois que les choses ont chargé . Vous devez retourner isLoading à partir du composant conteneur.

Je recommande également d'utiliser oneProject par lui-même puisque vous obtenez en haut de rendre dans tous les cas:

const { oneProject, isLoading } = this.props;