RemotePushIOS 收到的令牌不能设置为状态
Token received by RemotePushIOS cannot be set as a 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')'
为什么会这样?解决方法是什么?
问题是,您的 this
引用未指向您的组件。
为了避免 this
引用绑定到回调函数,您可以使用 ES6 箭头函数代替 function 关键字。
替换
RemotePushIOS.requestPermissions(function(err, data) {
有
RemotePushIOS.requestPermissions((err, data) => {
ES6 箭头函数是词法范围的,因此函数内部的 this
将指向函数外部的上下文,假设您在组件的方法内部执行此代码,它将指的是你的组件。
我正在使用 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')'
为什么会这样?解决方法是什么?
问题是,您的 this
引用未指向您的组件。
为了避免 this
引用绑定到回调函数,您可以使用 ES6 箭头函数代替 function 关键字。
替换
RemotePushIOS.requestPermissions(function(err, data) {
有
RemotePushIOS.requestPermissions((err, data) => {
ES6 箭头函数是词法范围的,因此函数内部的 this
将指向函数外部的上下文,假设您在组件的方法内部执行此代码,它将指的是你的组件。