【发布时间】:2020-02-24 09:01:28
【问题描述】:
如何在 useEffect 中使用自定义方法? 如果我创建了许多组件并且它们使用相同的 fetch 函数,我应该在每个组件的效果中声明 fetch 函数吗?功能也一样??
据我所知,如果我想在 useEffect 中使用组件的状态,我应该在 useEffect 中声明并调用该函数,如示例 1。
但我想在其他 js 文件中声明该函数。因为它被称为其他组件。
根据 Dan Abramov (https://overreacted.io/a-complete-guide-to-useeffect/) 的说法,如果我想移动函数,我必须使用 useCallback 方法。 但我没有很好地理解。请给我任何关于这个问题的建议。
1. Component.js
const Component = () => {
const [id,setId] = useState(0);
const dispatch = useDispatch();
useEffect(() => {
fetch(`url/${id}`).then(res => dispatch({type: success, payload: res}))
},[id])
}
2. Component.js
const Component = () => {
const [id, setId] = useState(0);
useEffect(()=> {
callApi(id)
},[id])
}
Api.js
const callApi = (id) => {
const dispatch = useDispatch();
return fetch(`url/${id}`).then(res => dispatch({type:success, payload:res})
}
【问题讨论】:
标签: reactjs react-redux react-hooks use-effect