Skip to content

toObserver

Category
Export Size
97 B
Package
@reause/rxjs
Last Changed
5 days ago

Sugar function to convert a ref object (RefObject) or a setter function into an RxJS Observer — a useRef write does not re-render.

Demo

Usage

tsx
import { 
toObserver
} from '@reause/rxjs'
import {
useRef
,
useState
} from 'react'
import {
interval
} from 'rxjs'
import {
take
} from 'rxjs/operators'
const [
count
,
setCount
] =
useState
(0)
const
countRef
=
useRef
(0)
interval
(1000).
pipe
(
take
(5)).
subscribe
(
toObserver
(
setCount
)) // same as ).subscribe(val => setCount(val)) — re-renders
interval
(1000).
pipe
(
take
(5)).
subscribe
(
toObserver
(
countRef
)) // same as ).subscribe(val => (countRef.current = val)) — no re-render

Type Declarations

ts
export type ObserverTarget<T> = {
    current: T;
} | ((value: T) => void)

export function toObserver<T>(target: ObserverTarget<T>): NextObserver<T>

Source

Source · Demo

Contributors

hairyf

Changelog

v0.1.0 on
e7ea5 - feat(rxjs): add toObserver (#42)

Released under the MIT License. v0.1.8