gpt4 book ai didi

reactjs - 使用 useContext 和 useReducer 进行状态管理并使用 useEffect 获取数据

转载 作者:行者123 更新时间:2023-12-04 12:36:59 25 4
gpt4 key购买 nike

我有一个 React 应用程序,它使用 useContext 和 useReducer 管理其全局状态。我的 BookList组件在挂载时需要从服务器获取书籍。如果获取书籍成功,它们应该存储到全局状态。

我的方法如下

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 has a missing dependency: 'dispatch'. Either ...



我是否必须添加 dispatch到依赖数组来消除警告还是有更好的方法?

最佳答案

警告在这里不是很相关,因为文档建议省略 dispatch来自 useEffect 的依赖项列表,但是您可以安全地将其放入依赖项数组中,因为它的身份始终是稳定的。
doc说:

React guarantees that dispatch function identity is stable and won’t change on re-renders.
This is why it’s safe to omit from the useEffect or useCallback dependency list.

关于reactjs - 使用 useContext 和 useReducer 进行状态管理并使用 useEffect 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60448939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com