forked from crowetic/commerce
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')
|
||||
}
|
||||
|
||||
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>() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user