gpt4 book ai didi

mongodb - meteor react : in constructor collection is empty

转载 作者:可可西里 更新时间:2023-11-01 10:42:22 25 4
gpt4 key购买 nike

由于我是 meteor/react 的新手,所以我不知道如何初始化我的状态变量。

我的问题是我想得到

  1. 通过来自 react-meteor-data 的 createContainer 收集我的 mongo(如 here 所述),
  2. 使用 initialized 属性初始化状态变量

但是构造函数中的prop是空的。只有当我调用“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);

最佳答案

你是对的,数据是异步加载的,它可能在构造函数中不可用。但是,您传递给 createContainer 的回调函数会在加载数据时再次求值,它会自动更新组件的 props

要捕获此更改,请在 React 组件中实现 componentWillReceiveProps 函数。

componentWillReceiveProps(nextProps) {
this.setState({
lists: nextProps.allLists
});
}

此处的文档:https://facebook.github.io/react/docs/component-specs.html

关于mongodb - meteor react : in constructor collection is empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36702239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com