React.NET icon indicating copy to clipboard operation
React.NET copied to clipboard

Redux store reused between renders?

Open magnusottosson opened this issue 4 years ago • 3 comments

Hello,

I found an interesting bug in our production environment. One component that uses redux failed to set it redux store data but still tried to render. It then, in some cases, rendered data from a previous render for the same component. All renders are on the server.

This leads me to believe that the redux store is shared between requests? I have engine poolin on so I guess its just when I get the same engine instance?

Could this be true?

magnusottosson avatar Jan 05 '22 12:01 magnusottosson

Instances of the JS engine are shared between requests to make requests faster (as it only has to load the JS once). Either:

  1. Disable pooling. This will mean that each request creates a brand new JS engine, which slows down page load a bit.
  2. Clean up any global state at the end of your request (eg execute some JS in the JS engine). We can provide example code for this if needed.

Daniel15 avatar Jan 05 '22 12:01 Daniel15

OK! good. I just wanted to get it confirmed that state is shared :) But then I know and I can handle it.

magnusottosson avatar Jan 05 '22 13:01 magnusottosson

Another question: It seems that when you run ReturnEngineToPool the engine is disposed (if pooling is used). Wouldnt this mean that the current engine wont be used again? So no shared state with the next component that renders?

magnusottosson avatar Jan 07 '22 08:01 magnusottosson