我有一个非常烦人的问题,无法理解为什么会这样。我有以下容器:
export default SomeContainer = createContainer(( params ) => {
const handle1 = Meteor.subscribe('SomePub');
const isReady1 = handle1.ready();
var someData = [];
if( isReady1 ){
someData = collections.SomeColl.find({}).fetch();
}
console.log(someData);
return {
someData: someData
};
}, SomeComponent);
以下是组件:
export class SomeComponent extends Component {
constructor(props) {
super(props);
console.log(this.props);
}
};
当console.log
来自容器的someData
内容时,它包含一些数据。但是,当我在组件的props中检查someData
时,它只显示someData
为空数组。
任何人都知道发生了什么事?
答案 0 :(得分:1)
如果您查看控制台日志,您应该看到以下内容:
从SomeComponent.constructor记录,显示相同 - this.props是[](空数组)
从createContainer进行日志记录,显示someData中的数据,例如[对象,对象,对象,对象] - 您的客户端现在拥有miniMongo中的数据,并已重新渲染您的组件。
当你的组件从服务器接收数据时,它会重新呈现 - 重新运行createContainer和组件的render方法 - 但不是构造函数。
如果将console.log(this.props);
从构造函数移动到渲染方法,您将看到它已收到数据,如果将其包含在输出中,您将在浏览器中看到它。