Comments (2)
Is the shouldUpdate
prop in Container
good enough for this use case? Other than than being a syntax shortcut, what benefits would it bring? I just personally think that shouldUpdate
is clearer and short enough.
from constate.
I guess the first case using shouldUpdate
would look like this:
<Container
initialState={{ foo: "foo", bar: "bar" }}
shouldUpdate={({ state, nextState }) => state.foo !== nextState.foo}
/>
But it can get more complex:
// subscribe to "a", "b" and "c.b"
<Container
initialState={{ a: "a", b: "b", c: { a: "a", b: "b" }, d: "d" }}
shouldUpdate={({ state, nextState }) => (
state.a !== nextState.a ||
state.b !== nextState.b ||
state.c.b !== nextState.c.b
)}
/>
// or
<Container
initialState={{ a: "a", b: "b", c: { a: "a", b: "b" }, d: "d" }}
shouldUpdate={({ state, nextState }) => (
state.c.a === nextState.c.a &&
state.d === nextState.d
)}
/>
The case above with subscription
:
// subscribe to "a", "b" and "c.b"
<Container
initialState={{ a: "a", b: "b", c: { a: "a", b: "b" }, d: "d" }}
subscription={{ a: true, b: true, "c.b": true }}
/>
// or
<Container
initialState={{ a: "a", b: "b", c: { a: "a", b: "b" }, d: "d" }}
subscription={{ "c.a": false, d: false }}
/>
The problem with shouldUpdate
is that it can be hard to read and reason about. At the same time, we need to keep it as a low level API.
But, in the end, it depends on how often people would need something as subscription
. For pure
, for example, I was using it almost everywhere (I even considered making it true
by default, but it could have some silent unintended side effects), so it was worth creating a prop for it.
The only situation I really wanted this subscription
was when I was building a complex Form Container.
from constate.
Related Issues (20)
- Possible to do lazy splitting at time of hook usage? HOT 4
- Limit to the number of split values? HOT 2
- Accept generics in hook HOT 8
- Splitting ContextProvider definition from context value using part HOT 6
- Simple Package HOT 2
- Better Typescript types HOT 5
- Allow to invoke useCounter hook with arguments HOT 2
- Is it possible to have a ref to the Provider? HOT 5
- Demo for Complex Set State HOT 2
- How can i use overloading with constate? HOT 5
- How to pass props between nested providers HOT 1
- Mock initial state
- Types are not inferred properly HOT 6
- React Fast Refresh doesn't work on Constate side HOT 5
- Clarify that hooks are available in selector function HOT 4
- How to create selectors in order to listen on multiple changes in context's state? HOT 2
- When the selector returns an object, all components are re-rendered. HOT 2
- Migrate to GitHub actions
- How to access underling React.Context
- does constate support nested dynamic providers? HOT 1
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 constate.