fabioz 4 days ago

Isn't `useContext` the builtin React alternative to that issue?

1
Already__Taken 4 days ago

Yes but they will rerender from where the context was created not where it's used, so you can get a lot of UI renders.

I think the new memo compiler address' this in the most complicated way possible.

SebastianKra 4 days ago

That's simply not true.

  function MyProvider({ children }) {
    const [value, setValue] = useState()
    return <Context.Provider value={value}>
      {children} 
    </Context.Provider>
  }
In the above example, the Provider re-renders, but it's children remain unchanged.

owebmaster 4 days ago

> Yes but they will rerender from where the context was created

Wow that's really bad and make it basically useless.

Capricorn2481 4 days ago

A re-render in React is not as heavy as you'd think it is. It's painting the DOM that takes resources, and people conflate the two. But if your whole component re-renders because of a change in context, yet nothing on the page changed, you will likely not notice the render even on low-end devices.

I still think Zustand is the simplest state management, while staying efficient. It's similar to the old Svelte stores. But I have used many state management tools and the re-renders were not the problem when it came to speed.

jgalt212 4 days ago

not if the compiler stops the unneeded re-renders.

owebmaster 4 days ago

A "compiler" to solve the issues the library created, awesome. It doesn't solve many re-renders tho, as React re-render full components, not only the HTML/Text Nodes that changed.