import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import Actions from '../actions';
export const UserComponent = ({ foo, baz, bar, user, fetchUser }) => {
useEffect(() => {
console.log('##### I WAS CALLED I WAS CALLED');
fetchUser();
}, []);
return (
<div>
<p>{user.name}</p>
<p>{foo} {baz} {bar}</p>
</div>
);
};
UserComponent.propTypes = {
fetchUser: PropTypes.func.isRequired,
user: PropTypes.shape({}),
};
const mapActionsToProps = {
fetchUser: Actions.fetchUser,
};
const mapStateToProps = ({ data }) => ({
user: data.user,
});
export default connect(mapStateToProps, mapActionsToProps)(UserComponent);
我得到了一个错误“React有一个缺失的依赖项”
但是如果我把fetchUser
放在依赖数组中
useEffect(() => {
console.log('##### I WAS CALLED I WAS CALLED');
fetchUser();
}, [fetchUser]);
它会导致无限循环。
发布于 2019-07-18 03:44:42
我在基于钩子的组件中错误地使用了redux。本指南帮助我在使用钩子的功能组件中使用redux
。https://react-redux.js.org/next/api/hooks
发布于 2019-08-21 06:19:18
问题是,函数fetchUser在每次呈现中都会发生变化。您可以使用"useCallback“来解决这个问题。
示例:
const initFetchMethod = useCallback(() => {
return dispatch(fetchUserAction())
}, [dispatch])
useEffect(() => {
initFetchMethod();
}, [initFetchMethod]);
参考文献:
发布于 2019-07-17 02:23:34
错误说,您需要将效果回调所使用的所有资源(vars/函数)放在依赖项数组中。
因此,您需要将fetchUsers放在依赖项数组中。但是,它会导致无限循环。因为,每次都会重新创建fetchUsers实例。
您需要维护api响应的加载状态。然后,在回调中添加一个支票,如下所示:
useEffect(() => {
if(!user && !loading ) {
fetchUser();
}
}, [fetchUser, user]);
https://stackoverflow.com/questions/57072361
复制相似问题