Comments (4)
Ah, got it, right!
Yes, then the fix is to surround this.unsubscribeToOuter()
with a condition.
I don't see anything hacky about this: the function will only exist for nested providers.
This means SC currently crash any app on unmounting if it has just one provider.
from styled-components.
Hmm, yeah that's because we use the life cycle hooks to subscribe and unsubscribe from context updates. The hack seems to work, but @gaearon might have a better idea how to properly fix this?
from styled-components.
I don't see what is hacky there.
The code calls a function in componentWillUnmount that only exists under certain condition. This is not an issue with HMR, it's an issue that will occur in any app that unmounts top-level components.
The fix is to use the same condition in both cases?
(Also ThemeProvider is a bit over-engineered. React Broadcast has concept of "channels" because it is a generic utility. You only need a single "channel" because you are a single purpose tool. So there was no need to use "broadcasts" context field with multiple "channels", you just need to pass a single event emitter down. You can call your context field styledComponentsTheme
or something like this.)
from styled-components.
@gaearon check the code, I've long done that. Realized it as well!
from styled-components.
Related Issues (20)
- Override a styled component that use $ for variables does not pass props correctly HOT 2
- Antd dark theme does not work HOT 1
- Fix plain NodeJS usage
- RNW styles applied twice when using nextjs app directory with react-native-web with SSR HOT 1
- styled-components injects styles for non loaded components on react-native-web
- Simple Styled Component giving error about extending not existing component in Next 14
- Jest test fail on upgrading the styled-components lib version from 5.3.1 to 6.1.8
- correct work in nextjs app route with plugins
- TypeError: __vite_ssr_import_5__.default.div is not a function [fixed]
- `css` props are not applied within the server component.
- Failed to parse `&` multiple times in `:is() :where() :has()` pseudo-class selector
- Theme prop (not styled) is not being passed through HOT 1
- Feature request for v5 to ease migration to v6 of large ecosystems
- Interplay of `shouldForwardProp` clarifying question
- Export the `toStyleSheet` function HOT 3
- createGlobalStyle not working version >= 5.3.1 HOT 1
- [Docs] Lint for pseudo selectors - Styled Components update from v5 to v6 HOT 1
- Tailwind selectors do not work the expected (from me) way
- React SSR Streaming Bug
- Error while building project after upgrading from 5.3.11 to 6.0.0 HOT 2
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 styled-components.