SolidJSS
SolidJSโ€ข12mo agoโ€ข
4 replies
Harry Boter

Context provider breaks while using esbuild-plugin-solid

I don't know if the problem is actually related to building component with esbuild with esbuild-plugin-solid, but whenever I call useContext from a child component, context is undefined. Am I missing something?

Wrapper:
export default function CollectionWrapper() { return ( <CollectionProvider> <CollectionHeader /> </CollectionProvider> ) }

Provider:
import { createContext, createSignal, useContext } from "solid-js" const CollectionContext = createContext() export function CollectionProvider({ children }) { const [title, setTitle] = createSignal("My title") return ( <CollectionContext.Provider value={{ title }}> {children} </CollectionContext.Provider> ) } export function useCollection() { const context = useContext(CollectionContext) if (!context) { throw new Error("useCollection must be used within a CollectionProvider") } return context } export { CollectionContext }

Header:
export default function CollectionHeader(d) { const {title } = useCollection() return ( <div className="CollectionHeader"> <h2>{title}</h2> </div> ) }

Esbuild script:
await esbuild.build({ entryPoints: entryPoints.map(({ path }) => path), bundle: true, outdir: outputDir, splitting: true, format: "esm", platform: "browser", loader: { [JSX_EXTENSION]: JSX_EXTENSION.slice(1) }, conditions: ["development", "browser"], plugins: [solidPlugin()], })
Was this page helpful?