2016-09-03 6 views
4

Может ли кто-нибудь помочь мне в этом вопросе, пожалуйста, я запускаю React on Meteor, и у меня есть этот компонент, чтобы добавить некоторые данные в Mongo, используя TrackerReact, но я не могу их отобразить в другой заполняет эти данные в другом компоненте, я являюсь abale для данных console.log после загрузки страницы, поэтому я думаю, что, возможно, загрузка страницы перед загрузкой Mongo, любое предложение, пожалуйста, помогите, Спасибо,Невозможно отобразить данные из Mongo in meteor using response

здесь Adminadd .jsx где я сэкономить на Монго:

import React from 'react'; 
import TrackerReact from 'meteor/ultimatejs:tracker-react' 

Gifts= new Mongo.Collection("gifts"); 

export default class AdminAdd extends TrackerReact(React.Component){ 
addGift(event){ 
    event.preventDefault(); 

    giftName=this.refs.giftname.value.trim(); 
    giftCity=this.refs.giftcity.value.trim(); 
    giftActive=this.refs.giftactive.checked; 

    Gifts.insert({ 
     name: giftName, 
     city: giftCity, 
     active: giftActive, 
    }); 

    this.refs.giftname.value=""; 
    this.refs.giftcity.value=""; 
    this.refs.giftactive.checked=false; 
} 

render(){..RenderStuff..} 

здесь, где я хочу, чтобы загрузить их:

import React from 'react'; 
import Gift from './components/Gift.jsx' 
export default class Main extends React.Component{ 
allgifts(){ 
    return Gifts.find().fetch(); 
} 
render(){ 
    console.log(allgifts()); 
    return(
     <div className="row"> 
     {this.allgifts().map((gift)=>{ 
      return 
       <Gift gift={gift} key={gift._id}/>})} 
     </div> 
    )}} 

и подарков Компонент:

import React from 'react'; 
export default class Gift extends React.Component{ 
render(){ 
    return(
     <div> 
      <div> 
       <div>{this.props.gift.name}</div> 
       <div>{this.props.gift.city}</div> 
       <div>{this.props.gift.active}</div> 
      </div> 
     </div> 
    )}} 

и это лог консоли, на первый обратный пустой объект, а затем, когда я Gifts.find() выборки() это руководство работает после того, что:.

[] 
Gifts.find().fetch() 
Object, Object, Object, Object, Object, Object, Object, Object] 

ответ

3

Как сказал koolaang, шаблон может быть отображен в первый раз перед загрузкой коллекции Gifts. Тем не менее, реальная проблема заключается в том, что она не реагирует повторно при загрузке коллекции. Это связано с тем, что вы не завернули свой Main компонент в TrackerReact. Поэтому вам необходимо исправить это следующим образом:

export default class Main extends TrackerReact(React.Component) { ... } 

Теперь компонент должен быть повторно отображен после загрузки коллекции. Вы можете проверить готовность к подписке, если хотите реализовать состояние загрузки, но это не требуется.

+0

wow, Это действительно сработало отлично, спасибо, поэтому, когда я когда-либо общаюсь с Mongodb, отправляю данные по погоде или получаю, я должен обернуть TrackerReact. еще раз спасибо –

1

Это потому, что для получения данных из бэкэнд требуется ваше время. Если вы используете публикацию/подписку, вы должны использовать handle.ready, чтобы дождаться, когда данные попадут во внешний интерфейс.

+0

Большое спасибо koolang –

Смежные вопросы