How do I trigger a the useEffect hook when state.providers["providerId"].isProviderRowValid changes?
I cannot put state into the dependency array as it will cause an infinite loop because of the subsequent state update to isSubmitDisabled.
const providerRowHandler = (providerId: string, isRowValid: boolean): void => {
setState({
...state,
providers: {
...state.providers,
[providerId]: {
...state.providers[providerId],
isProviderRowValid: isRowValid
}
}
});
};
useEffect(() => {
console.log('state.providers changed, update form state');
const providers = { ...state.providers };
const isRowsValid = Object.values(providers)
.map(k => k.isProviderRowValid)
.every(row => row === true);
setState({
...state,
isSubmitDisabled: isRowsValid === false
});
}, [// how to watch isProviderRowValid only as a state update here ]);
state.providers["providerId"].isProviderRowValidin the dependency array?providers[id]in the dependency array as["providerId"]is a dynamic key.. like [providers[0], providers[1] ...etc ] this doesnt work imoproviderIdis not known at that point, it could be any key instate.providers