Comments (5)
I've come across this a few times while working on https://github.com/elastic/kibana. The solution I used was to decompose the App
, providers and content into several components so the context value can be accessed via the hook as usual:
const App = () => (
<AppProviders initialValue="a">
<AppEffects />
<AppContent />
</AppProviders>
)
const AppProviders = ({ children, initialValue }) => {
<ValueProvider initialValue={initialValue}>
{children}
</ValueProvider>
}
const AppEffects = () => {
const [, setValue] = useValueContext();
useEffect(() => {
setTimeout(() => {
setValue('b');
}, 2000);
}, [setValue]);
}
I find that pretty readable without the need for a more complex API. @awkpagong, could that work for you?
from constate.
@diegohaz ok I will try @weltenwort's suggestion then. It's a bit more verbose, but I agree it will keep the API simple. Thanks for the suggestions guys!
from constate.
I've never seen that. Maybe something like this?
function useValueWithRef({ providerRef }) {
...
}
...
<ValueProvider providerRef={ref} />
from constate.
I've never seen that. Maybe something like this?
function useValueWithRef({ providerRef }) { ... } ... <ValueProvider providerRef={ref} />
@diegohaz thanks for the suggestion. I will try that. And thanks for all your amazing work on this package!
from constate.
I still don't understand the use case. But, If @weltenwort's solution solves your problem, it's preferable.
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
- 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.