mirror of
https://github.com/vercel/commerce.git
synced 2025-05-02 07:47:50 +00:00
Memoize commerce config
This commit is contained in:
parent
3d2739e526
commit
c782b3d0f0
@ -35,7 +35,20 @@ export function CommerceProvider({ children, config }: CommerceProps) {
|
|||||||
throw new Error('CommerceProvider requires a valid config object')
|
throw new Error('CommerceProvider requires a valid config object')
|
||||||
}
|
}
|
||||||
|
|
||||||
return <Commerce.Provider value={config}>{children}</Commerce.Provider>
|
// Because the config is an object, if the parent re-renders this provider
|
||||||
|
// will re-render every consumer unless we memoize the config
|
||||||
|
const cfg = useMemo(
|
||||||
|
() => ({
|
||||||
|
fetcher: config.fetcher,
|
||||||
|
locale: config.locale,
|
||||||
|
cartCookie: config.cartCookie,
|
||||||
|
}),
|
||||||
|
// Even though the fetcher is a function, it's never expected to be
|
||||||
|
// added dynamically (We should say that on the docs for this hook)
|
||||||
|
[config.fetcher, config.locale, config.cartCookie]
|
||||||
|
)
|
||||||
|
|
||||||
|
return <Commerce.Provider value={cfg}>{children}</Commerce.Provider>
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useCommerce<T extends CommerceConfig>() {
|
export function useCommerce<T extends CommerceConfig>() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user