Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用RxJS进行本机反应_Android_Ios_React Native_Rxjs - Fatal编程技术网

Android 使用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常规函数符号时,如

我将React Native与RxJS一起使用,直到现在,每当我订阅一个可观察的项目时,我一直在做:

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);
有关此主题的更多信息:


您试图绑定此的是什么?这似乎是只有在不使用箭头函数的情况下才必须执行的操作?。。我的年龄与“azium”有关。如果你写()=>{},那么来自外部作用域的
这个
已经在函数中绑定了。
()=>{returnthis}()===function(){returnthis}.bind(this)(
这应该是最好的答案@coldbuffet