React state updates are asynchronous, so you shouldn't do
Controlled Components
You mentioned that you "need to know if the rows it uses are always the ones actually displayed by the table". You can guarantee this by keep a single source of truth for the data by using controlled components.
Consider this example:
const [email, setEmail] = useState("");
...
return (
<input
value={email}
onChange={(event) => setEmail(event.target.value)}
/>
Since we are setting the value of our input to the state variable email, we will always know that whatever value is displayed in the input field is the same as the value stored in the email state variable.
If we erroneously omit value like this: <input onChange={(event) => setEmail(event.target.value)} /> then we will have two sources of truth: 1. The DOM which handles the html input element, and 2. The state variable called email. This has potential to cause bugs later.
CodePudding user response:
I suggest using this code
const _handleChange = (event) => {
let temp =event.target.value;
setEmail(temp);
_updateEmailPermissions(temp);
};
I think using another event is working safely, but I think you can use a promise for that.
setAsyncState = (newState) =>
new Promise((resolve) => this.setState(newState, resolve))
