Comments (5)
Unfortunately as I had explained in the docs performing synchronous side effects is not safe in concurrent mode.
It might be okay if just a Behaviour Subject but users may create all kinds of observable pipelines. If you have for example an initial remote data fetching, this could be triggered multiple times if the subscription happens in render phase.
from observable-hooks.
When we toggle the element the subscription is still alive.
The observable is auto-unsubscribed when the component unmounts. For your situation the <h1>
and the observable should move to a new component. You can also control subscription manually with useSubscription
but that's not a good fit for this scenario.
Btw, I also get a type error:
useObservableState<string, React.MouseEvent<HTMLHeadingElement>>
or useObservableState<string, unknown>
if you want arbitrary argument.
from observable-hooks.
What about passing the show
property to useObservableState
and it will unsubscribe when it's false
and resubscribe when it's true
. It's a bit of overhead to create a component for this.
from observable-hooks.
If creating a component is a overhead then it is safe to just leave the observable as it is. There is close to no impact in terms of CPU and memory footprint.
What about passing the show property to useObservableState and it will unsubscribe when it's false and resubscribe when it's true.
Patterns like this will create unnecessary complication IMO. You may create a custom hook for this though. Do note that it may cost more if you keep unsubscribing and resubscribing.
from observable-hooks.
Ok, thanks. Last question:
What about a use case where I have a BehaivorSubject
? In this case, I expect that useObservable
will take the initial value synchronously and use it instead of passing a "redundant" initial value and cause an additional re-render. What do you think?
It's common usage in state management libraries such as Akita.
from observable-hooks.
Related Issues (20)
- 老哥多出些rx的文章呗
- rfc: 为 useObservable 添加泛型以匹配多种 Observable HOT 1
- 请问下现在这个库再react18中使用,有多大的风险,有列举有风险的api吗 HOT 1
- 如何使用 useObservableEagerState 获取“从无到有”的 BehaviorSubject 值? HOT 2
- Question - descendent re-rendering? HOT 2
- `useObservableCallback`: allow callback with no parameters, or > 1 parameters HOT 4
- Specify custom dependencies for `useObservableSuspense` HOT 7
- useSubscription typescript wont allow undefined or null input$ HOT 4
- 为啥国内作者,文档全是英文呢? HOT 3
- ❓ Question: How can i use useObservable to create a subject HOT 1
- useObservableState: Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render. HOT 5
- Provided sourcemaps reference the src folder which isn't distributed HOT 3
- RxJs 7.0 support HOT 2
- Feature proposal: A hook to create a Observable State HOT 2
- 违背hooks原则 HOT 1
- useObservableEagerState missing emit HOT 13
- useObservableState(BehaviorSubject) gives undefined when first rendering HOT 2
- useSubscription 会触发 JS 报错导致页面白屏 HOT 27
- Make XHR requests using ObervableResource with a parameter HOT 4
- 如何实现替换react官网的useEventCallback? HOT 11
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from observable-hooks.