当前位置: 代码迷 >> JavaScript >> React Native场景不会从Parse Promise更新
  详细解决方案

React Native场景不会从Parse Promise更新

热度:119   发布时间:2023-06-05 09:27:47.0

我目前正在使用React Native,并决定使用Parse(parse.com)设置我的应用程序。

我遇到了一个带有React Native和Parse Promise的奇怪错误-当我通过Parse Promise一个回调时,它将运行该回调中的所有内容,但场景中没有任何变化。 本质上,当解析承诺解析后,UI不会更新-但是,在我点击屏幕后,所有更新都会按预期进行。

这是一个代码段,在通过Parse成功登录后,我试图导航到一个新场景。 我正在做的就是将导航对象传递给新路线。 “登录成功”和“已调用导航功能”都输出到控制台,但是场景首先不会转换。 但是,当我在任意位置轻按屏幕后,场景将按预期过渡。

var navigate = function(object) {
  console.log("Navigate function called!");
  this.props.navigator.push(/* route object */);
}.bind(this);

Parse.User.logIn("email", "password").then(
  function(object) {
    console.log("Login successful!");
    navigate(object);
  },
  function(error) {
    console.log(error.message);
  },
);

对可能发生的事情有什么想法/见解?

注意:我使用常规的Javascript Promises尝试了相同的代码,例如:

new Promise(resolve, reject)) ...)

一切都按预期进行。 具有setTimeout的其他版本也可以工作。 因此,我的结论是,React Native确实处理了Promise回调和异步调用(问题不在于此)。

为了确保它不是React Native navigator器中的错误,我还尝试了通过setState调用更新视图,并且发生了完全相同的问题。 也许Parse承诺不会以某种方式更新主线程? 也许解析承诺的实现方式导致了React Native视图冻结?

尝试使用ES6 Promises(或任何其他第三方Promise库)时,我遇到了同样的问题。 我能够通过使用react-native的本地promise实现来解决它。

Promise = require('react-native/Libraries/Promise');

我知道您正在使用解析,因此可能需要请求请求才能获取解析承诺以返回本机??承诺。 希望这对我有所帮助的人有所帮助。

  相关解决方案