All situations
1
Don't like app logic in React hooks?
Actions are plain functions. Components just read.
useStateuseEffectuseMemo
export function Header() {
const [user, setUser] =
useState<User | null>(null)
useEffect(() => {
fetchUser().then(setUser)
}, [])
const isAdmin = useMemo(
() => user?.roles.includes('admin'),
[user],
)
return (
<span>
{isAdmin ? 'Admin' : 'User'}
</span>
)
}
const $user = atom<User | null>(null)
onMount($user, () => {
fetchUser().then($user.set)
})
const $isAdmin = computed($user, (user) =>
user?.roles.includes('admin'),
)
export function Header() {
const isAdmin = useStore($isAdmin)
return (
<span>
{isAdmin ? 'Admin' : 'User'}
</span>
)
}Like your logic in hooks? Zustand is a great choice.
npm install nanostoresTwo islands need the same data →One state for several frameworks →