我有一个如下所示的 React 组件(省略了某些部分),并且我正在使用 redux 进行状态管理。该getRecentSheets
操作包含一个 AJAX 请求,并将响应分派给 redux,reduxstate.sheets.recentSheets
使用响应的数据进行更新。
所有这些都按预期工作,但是在构建它时会抛出关于useEffect 缺少依赖项的警告: 'getRecentSheets'。但是,如果我添加getRecentSheets
到 useEffect 的依赖项数组,它将开始无限期地重新运行,从而冻结应用程序。
我已经阅读了关于useEffect
钩子的React 文档https://reactjs.org/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies但它没有t 为此类用例提供了一个很好的例子。我想它与 useCallback 或 react-redux useDispatch 有关,但没有示例,我不确定如何实现它。
有人可以告诉我在 useEffect 中使用 redux action 的最简洁和惯用的方法是什么,以及如何避免有关缺少依赖项的警告?
import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import SheetList from '../components/sheets/SheetList';
import { getRecentSheets } from '../store/actions/sheetsActions';
const mapStateToProps = (state) => {
return {
recentSheets: state.sheets.recentSheets,
}
}
const mapDispatchToProps = (dispatch) => {
return {
getRecentSheets: () => dispatch(getRecentSheets()),
}
}
const Home = (props) => {
const {recentSheets, getRecentSheets} = props;
useEffect(() => {
getRecentSheets();
}, [])
return <SheetList sheets={ recentSheets } />
};
export default connect(mapStateToProps, mapDispatchToProps) (Home);