我使用react-native-meteor连接到Meteor服务器。当我运行以下代码时,我得到输出作为截图。在第一次调用render方法之前,尚未建立连接。我怎么处理这个?我可以阻止直到连接发生吗? (onConnection方法在react-native-meteor中不可用)
export default class App extends Component {
componentWillMount() {
console.log("GOing to connect");
Meteor.connect(SERVER_URL);
console.log("After connect : " + JSON.stringify(Meteor.status()));
}
render() {
console.log(Meteor.status());
console.log(JSON.stringify(Meteor.user()));
if (Meteor.status().status === "connected") {
if (Meteor.user()) {
return ( <
TestViewOne / >
);
} else {
return ( <
TestViewTwo / >
);
}
} else {
return ( < View > < /View>)
}
}
}
&#13;
当我使用以下代码时,Meteor.user()仍然返回null。
Meteor.ddp.on('connected', function() {
console.log("on Connected : " + JSON.stringify(Meteor.user()));
localForceUpdate();
});
&#13;
答案 0 :(得分:0)
您需要设置应用程序以渲染加载屏幕,直到使用withTracker连接服务器为止,这样主应用程序将不会继续进行到假定已建立连接的部分:
class App extends Component {
constructor(props) {
super(props);
}
render() {
if (!this.appLaunched) {
if (!this.props.serverConnected || this.props.loggingIn) {
return <LoadingScreen />;
}
}
this.appLaunched = true; //this prevents the app reloading to front page everytime server reconnects
return (
<Root>
<AppContainer />
</Root>
);
}
}
export default withTracker(params => {
return {
loggingIn: Meteor.loggingIn(),
serverConnected: Meteor.status().connected
};
})(App);