Я пытаюсь заставить горячую перезагрузку работать с реакцией 16.9.0
и реакцией-редукцией 7.1.1
.
Это мой код, в котором я хочу, чтобы загрузка данных (обратный вызов в useEffect()
) вызывалась только один раз:
function Sidebar() {
const dispatch = useCallback(useDispatch(), []);
useEffect(() => {
console.info('useEffect');
dispatch(loadFields());
}, [dispatch]);
...
}
Несмотря на использование useCallback()
для запоминания функции, когда я сохраняю изменение в другом файле JS, обратный вызов в useEffect()
вызывается снова, перезагружая поля.
Однако если я изменил зависимость функции useEffect()
с [dispatch]
на просто []
, то она работает так, как я хочу, и обратный вызов в useEffect()
не вызывается при горячей перезагрузке. Но если я это сделаю, рекомендуемый React Eslint жалуется, что я не включил зависимость dispatch
.
Как сделать так, чтобы линтер был доволен, а горячая перезагрузка правильно работала с useDispatch()
?
Другие симптомы:
- Использование статического
['anything']
также приводит к тому, что горячая перезагрузка не работает; что странно, потому что это должно быть эквивалентно[]
.