I've been trying to get Redux working in Svelte to make porting some React based code that use useDispatch
and useSelector
hooks simpler.
I found a useful guide which leads to a Gist. I've gone through and implemented this approach (which I did manage to get a more primitive example working some months back) but now can't seem to get things going.
I've got a reproduction of my progress here https://svelte.dev/repl/9ae9be44ed814a2b857962aa191173ed?version=4.2.12 but essentially the bit I'm struggling with is the useSelector
hook.
export function useSelector(selector, equalityFn) { if (!equalityFn) { equalityFn = (lhs, rhs) => lhs === rhs; } const store = getContext(STORE_KEY); let lastSelectorValue; return derived(store, ($state, set) => { console.log("This derived callback never fires"); const selectorValue = selector($state); if (!equalityFn(selectorValue, lastSelectorValue)) { lastSelectorValue = selectorValue; set(lastSelectorValue); } });}
For some reason when I set this up, the callback passed to derived never seems to get called.
Can anyone explain why this isn't working so I can fix the useSelector
?