【发布时间】:2020-06-12 09:26:37
【问题描述】:
我有一个 React 应用程序,它使用 useContext 和 useReducer 管理其全局状态。我的BookListcomponent 需要在挂载时从服务器获取书籍。如果获取书籍成功,它们应该被存储到全局状态。
我的方法如下
function BookList() {
const [state, dispatch] = useContext(BookContext);
const [loading, setLoading] = useState(true);
useEffect(() => {
BookService
.fetchBooks()
.then(resp => {
setLoading(false);
dispatch({
type: FETCH_BOOKS,
books: resp.data
});
});
}, []);
return (
<div>
{loading
? "Loading ..."
: state.books.map(book => (
<div key={book.id}>{`${book.title} - $${book.price}`}</div>))
}
</div>
);
}
这可行,但会产生警告
React Hook useEffect 缺少一个依赖项:'dispatch'。要么...
我是否必须将 dispatch 添加到依赖数组中才能消除警告,还是有更好的方法?
【问题讨论】:
-
基本可以,但是对这个函数的引用不会改变,所以它实际上是可选的。
标签: reactjs react-hooks react-state-management