等待流星使用反应原生流星连接

时间:2017-07-11 19:27:48

标签: meteor react-native

我使用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;
&#13;
&#13;

enter image description here

当我使用以下代码时,Meteor.user()仍然返回null。

&#13;
&#13;
Meteor.ddp.on('connected', function() {
  console.log("on Connected : " + JSON.stringify(Meteor.user()));
  localForceUpdate();
});
&#13;
&#13;
&#13;

1 个答案:

答案 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);