В связи с тем, что я новичок в метеоре/реакции, я не могу понять, как инициализировать переменную состояния.meteor-reactjs: в конструкторе коллекция пуста
Моя проблема заключается в том, что я хотел бы получить
- моей коллекции Монго через createContainer от реакции-Метеор-данных (как описано here),
- использовать инициализированную опору для инициализировать состояние переменной
Но опора в конструкторе пуста. Только когда функция «gotClicked» называется prop.allLists заполняется данными из mongo.
Кто-нибудь знает, почему? Я предполагаю, что данные загружаются асинхронно, так что данные еще не доступны в конструкторе. Что было бы лучшим способом получить данные?
import React, {Component, PropTypes} from 'react';
import { createContainer } from 'meteor/react-meteor-data';
import {AllLists} from '../api/alllists.js'
export default class MyList extends Component {
constructor(props) {
super();
console.log(props.allLists)
console.log(this.props.allLists)
//allLists is empty
this.state = {
lists: props.allLists
}
}
gotClicked(){
console.log(this.props.allLists)
//allLists is filled
}
render() {
return (
<div className="container" onClick={this.gotClicked.bind(this)}>
</div>
);
}
}
MyList.propTypes = {
allLists: PropTypes.string.isRequired
}
export default createContainer(() => {
return {
allLists: AllLists.find({}).fetch()
};
}, MyList);
спасибо за советы. Я реализовал функцию componentWillReceiveProps. Теперь я получаю реквизит с результатом AllLists.find ({}). Fetch. Но кажется, что когда функция называется, выборка еще не завершена, потому что массив имеет разную длину при разных вызовах. – JGM
Вы также можете проверить состояние подписки. http://stackoverflow.com/questions/36585564/conditional-rendering-in-meteor-react/36585830#36585830 – aedm
Хорошо, теперь он работает! Благодарю. Чувствовать себя неудобно. – JGM