2017-10-14 36 views
0

我只想將容器中的對象文檔傳遞給我的組件並使用它。容器的代碼是這樣的:如何使用容器中的Meteor文檔對象來響應組件?

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); 

我用它在我的表象組件上這樣說:

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> 
... 

,但我得到這個錯誤: 類型錯誤:無法讀取屬性「農佈雷」的未定義 的問題是行:

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

回答

0

這將正常工作,一旦事情已經加載。您需要從容器組件返回isLoading

我也建議本身使用oneProject因爲你在任何情況下渲染的頂部得到它:

const { oneProject, isLoading } = this.props;

相關問題