Android 使用RxJS进行本机反应
我将React Native与RxJS一起使用,直到现在,每当我订阅一个可观察的项目时,我一直在做:Android 使用RxJS进行本机反应,android,ios,react-native,rxjs,Android,Ios,React Native,Rxjs,我将React Native与RxJS一起使用,直到现在,每当我订阅一个可观察的项目时,我一直在做: observable.subscribe(() => { this.setState({ loading: true }); }.bind(this)); 但自从我升级到React Native 0.16.0以来,无论我在何处对使用ES2015箭头符号声明的内联函数执行绑定(this),React Native都会将其视为错误。但是,当我将箭头符号更改回ES5常规函数符号时,如
observable.subscribe(() => {
this.setState({ loading: true });
}.bind(this));
但自从我升级到React Native 0.16.0以来,无论我在何处对使用ES2015箭头符号声明的内联函数执行绑定(this),React Native都会将其视为错误。但是,当我将箭头符号更改回ES5常规函数符号时,如下所示:
observable.subscribe(function() => {
this.setState({ loading: true });
}.bind(this));
错误似乎消失了
这是怎么回事?当您使用箭头函数时,您已经将其绑定到该特定函数。因此:
() => {} === function() {}.bind(this)
关于您的问题,我建议您也查看FrintJS,它还附带React和React本机集成: 它附带了一个
observe
higher-order组件,它允许您使用rxjsobservable将道具流式传输到您的组件,因此您的基本组件总是作为无状态函数编写的
例如:
import React from 'react';
import { Observable } from 'rxjs';
import { observe } from 'frint-react';
function MyComponent(props) {
return <p>Interval: {props.interval}</p>;
}
export default observe(function () {
// return an Observable emitting a props-compatible object here
return Observable.interval(1000)
.map(x => ({ interval: x }));
})(MyComponent);
从“React”导入React;
从“rxjs”导入{Observable};
从'frint react'导入{observe};
功能MyComponent(道具){
returnInterval:{props.Interval};
}
导出默认值(函数(){
//在此处返回一个可观察到的发射道具兼容对象
可观测返回间隔(1000)
.map(x=>({interval:x}));
})(MyComponent);
有关此主题的更多信息:
这个
已经在函数中绑定了。()=>{returnthis}()===function(){returnthis}.bind(this)(
这应该是最好的答案@coldbuffet