re-rxjs / react-rxjs

React bindings for RxJS
https://react-rxjs.org
MIT License
549 stars 19 forks source link

When an Observable emits a function #152

Closed ilikejames closed 3 years ago

ilikejames commented 3 years ago

Upgrading from @react-rxjs/core@0.2.0 -> @react-rxjs/core@0.5.0 came across this regression.

When an observable returns a function, we get a stringified (plus evaluated!) version of the function. This worked in the prior version.


const counter$ = timer(0, 1000).pipe(startWith(0), shareReplay(1));

const [useBoundMethodThatDoesntWork] = bind(() =>
  counter$.pipe(
    map((count) => {
      return (s) => `${s}: ${count}`;
    })
  )
);

// .....

const method = useBoundMethod();
method('a') // -> Not a function
typeof method // -> 'stirng'
return ({method})
  // -> function (s) { return "".concat(s, ": ").concat(count); }: 0:

Code

josepot commented 3 years ago

Hi @ilikejames ,

This issue is fixed on 0.6.1. However, we will be publishing a patch for 0.5 shortly and I will add some tests to make sure that this doesn't happen again. Thanks a lot for reporting this!