Some state action dispatchers in class components would refer to this.state property when given a function as the action argument. Since React 18 automatically batches state updates, calling such broken dispatcher after another dispatch in the same render might discard the changes performed by the earlier dispatcher because this.state would contain the state before the render started.
Let’s pass a function to this.setState and use the state argument provided by the dispatch to always get the freshest state.
Some state action dispatchers in class components would refer to
this.state
property when given a function as the action argument. Since React 18 automatically batches state updates, calling such broken dispatcher after another dispatch in the same render might discard the changes performed by the earlier dispatcher becausethis.state
would contain the state before the render started.Let’s pass a function to
this.setState
and use the state argument provided by the dispatch to always get the freshest state.Fixes: https://github.com/fossar/selfoss/issues/1454