我正在使用RemotePushIOS来获取设备 token 。

RemotePushIOS.requestPermissions(function(err, data) {
    if (err) {
        console.log("Could not register for push");
    } else {
        console.log(data.token);
        var value = "v"+data.token;

        console.log("VALUE: " + value);
        this.setState({
            deviceToken: value
        });
    }
});
console.log打印 token ,但是当使用 token 设置state时,程序崩溃并显示以下错误。
'undefined is not an object (evaluating 'this.setState')'

为什么会这样呢?解决方法是什么?

最佳答案

问题是,您的this参考未指向您的组件。

为了避免this参考绑定到回调函数,可以使用ES6箭头函数代替function关键字。

更换

RemotePushIOS.requestPermissions(function(err, data) {


RemotePushIOS.requestPermissions((err, data) => {

ES6箭头函数在词法上是作用域范围的,因此该函数内部的this将指向该函数外部的上下文,假设您正在组件的方法内部执行此代码,则该上下文将引用您的组件。

关于ios - 无法将RemotePushIOS收到的 token 设置为状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35010087/

10-10 21:04
查看更多