Я использую ловушку useEffect()
для обновления какого-либо состояния с помощью вызова 'useState':
useEffect(
() => {
const newProps = {}
departments.forEach(dept => {
const { code } = dept
const newCode = code.toLowerCase()
newProps[newCode + '_reviewer'] = ''
})
setFormValues({ ...formValues, ...newProps })
},
[departments]
)
ESLint, что неудивительно, выдает мне предупреждение formValues
:
React Hook useEffect has a missing dependency: 'formValues'.
Однако далее следует упомянуть:
Either include it or remove the dependency array.
You can also do a functional update 'setFormValues(f => ...)'
if you only need 'formValues' in the 'setFormValues' call
react-hooks/exhaustive-deps
Я заинтригован таинственным подходом setFormValues (f => ...). Что именно это означает? Как мне переписать setFormValues({ ...formValues, ...newProps })
, чтобы избежать предупреждения ESLint, без без добавления formValues
в качестве зависимости или с добавлением // eslint-disable-next-line react-hooks/exhaustive-deps
?
Я попытался посмотреть репо, и ближе всего я нашел этот , который, похоже, не упоминал об этой конкретной работе.