loadCart()
Loads a previously saved cart, enabling cart persistence across devices or sessions. Useful for logged-in users.
Signature
loadCart(cartDetails: CartDetails, shouldMerge?: boolean): voidParameters
cartDetails- The cart data to load (CartDetails object)shouldMerge- Whether to merge with current cart (default:true)true- Combines loaded cart with current cartfalse- Replaces current cart entirely (recommended)
Basic Usage
import { useEffect } from 'react'
import { useShoppingCart } from 'use-shopping-cart'
function App() {
const { loadCart } = useShoppingCart()
useEffect(() => {
// Load cart from your API
async function loadUserCart() {
const response = await fetch('/api/cart')
const savedCart = await response.json()
if (savedCart) {
loadCart(savedCart, false) // Replace current cart
}
}
loadUserCart()
}, [loadCart])
return <YourApp />
}Load Cart on User Login
import { useEffect } from 'react'
import { useShoppingCart } from 'use-shopping-cart'
import { useUser } from './auth'
function CartSync() {
const { loadCart } = useShoppingCart()
const user = useUser()
useEffect(() => {
if (!user?.id) return
let cancelled = false
async function syncCart() {
const response = await fetch(`/api/users/${user.id}/cart`)
const userCart = await response.json()
if (!cancelled && userCart) {
loadCart(userCart, false)
}
}
syncCart()
return () => {
cancelled = true
}
}, [user?.id, loadCart])
return null
}Save Cart on Changes
import { useEffect } from 'react'
import { useShoppingCart } from 'use-shopping-cart'
function CartPersistence() {
const { cartDetails } = useShoppingCart()
const user = useUser()
useEffect(() => {
if (!user?.id) return
// Debounce saves
const timeoutId = setTimeout(() => {
fetch(`/api/users/${user.id}/cart`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ cartDetails })
})
}, 500)
return () => clearTimeout(timeoutId)
}, [cartDetails, user?.id])
return null
}Notes
- Recommended: Set
shouldMergetofalseto avoid accidental duplicate merging - Typically used with user authentication systems
- Cart structure must match the CartDetails type
- Works alongside localStorage persistence (for logged-out users)
See Also
- Persistence - How cart persistence works
- shouldPersist - localStorage persistence
