dai-shi / proxy-memoize

Intuitive magical memoization library with Proxy and WeakMap

Home Page:http://proxy-memoize.js.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Nested calls doesn't work as expected...

groyee opened this issue · comments

Not sure if this is a bug or expected behavior:

I have the following selectors:

export const GetSelectorA = memoize(({ state, props }: { state: RootState; props: any }) => {
   return getSelectorA({
        itemA: state.itemA,
        itemB: GetSelectorB({state, props})
    });
}

// This selector doesn't have direct use of state.itemA
export const GetSelectorB = memoize(({ state, props }: { state: RootState; props: any }) => {
   return getSelectorB({
        itemC: GetSelectorC({state, props})
    });
}

// This selector depends on state.itemA
export const GetSelectorC = memoize(({ state, props }: { state: RootState; props: any }) => {
   return getSelectorC({
        itemA: state.itemA,
    });
}

When state.itemA is changed, GetSelectorA is being called which is good. But it doesn't call GetSelectorB (It takes the memoized version) because I guess GetSelectorB doesn't have direct use of state.itemA? But GetSelectorB depends on GetSelectorC which should be updated when state.itemA is changed...

Is it a bug or am I missing something here?

Hi, I just opened #62, which has the test.
It's currently passing. Can you make it to fail?

I tried to make it fail but I couldn't. I went back to my code to find the difference with the test you wrote and I realized that the problem is on my side. My live reload wasn't working properly and the changes I was making didn't take affect.

Apologies for that. My bad. I will close this issue.