javascript - React Native 场景不会根据 Parse Promise 进行更新

标签 javascript parse-platform react-native

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

我在 React Native 和 Parse Promise 中遇到了一个奇怪的错误 - 当我传递一个 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 调用更新我的 View ,但出现了完全相同的问题。也许 Parse promise 不会以某种方式更新主线程?或者也许 Parse Promise 的实现方式导致 React Native View 卡住?

最佳答案

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

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

我知道您正在使用解析,因此可能需要拉取请求才能获取解析 promise 以返回 react native promise 。希望这对某人有帮助,因为我花了几天时间对此感到困惑。

关于javascript - React Native 场景不会根据 Parse Promise 进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31630498/

相关文章:

javascript - 为什么这些 CSS 文件被下载了两次?

javascript - 如何为 Mongoose 查询中返回的每个文档执行异步方法

ios - 通过 segue,PFObject 崩溃 Parse.com

react-native - Facebook iOS 应用程序是用 React Native 构建的吗?

javascript - Jquery按数组中的元素值排序

javascript - 第一人称视角旋转不起作用

android - 使用自定义图标推送通知

xcode - 尝试从查询中将 Parse PFFiles 加载到 UITableView

react-native - react native : Cannot vertically align an image to bottom of the screen

javascript - 检查一个字符串是否包含另一个字符串 React Native