RemotePushIOS接收的令牌不能设置为状态

时间:2016-01-26 08:59:45

标签: ios react-native state

我使用RemotePushIOS来获取设备令牌。

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打印令牌,但在使用令牌设置state时,程序崩溃并出现以下错误。

'undefined is not an object (evaluating 'this.setState')'

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

1 个答案:

答案 0 :(得分:2)

问题是,您的this引用未指向您的组件。

为了避免this引用绑定到回调函数,可以使用ES6箭头函数而不是函数关键字。

替换

RemotePushIOS.requestPermissions(function(err, data) {

使用

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

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