javascript - ReactJS - 在不同的组件中使用相同的钩子
问题描述
我有一个从 api 获取数据的钩子,结果我用setAllCommunitiesFromSponsor
.
现在我需要在另一个组件中使用完全相同的钩子。
在这种情况下,除了复制粘贴之外,实现这一点的正确方法是什么?我需要创建一个自定义钩子吗?但是 setState 函数呢?
钩子:
useEffect(() => {
const getAllCommunitiesFromSponsor = async () => {
try {
const result = await api.get(
'https://someurl.com'
)
const resultArray = Object.values(result.data.rows)
setAllCommunitiesFromSponsor(resultArray)
} catch (error) {
toast.error('Failed to fetch data from the server')
}
}
getAllCommunitiesFromSponsor()
}, [])
解决方案
您可以创建自己的钩子,这非常简单。它只是一个使用钩子的函数。在你的情况下:
const useCommunitiesForSponsor = () => {
const [allCommunitiesFromSponsor, setAllCommunitiesFromSponsor] = useState();
useEffect(() => {
const getAllCommunitiesFromSponsor = async () => {
try {
const result = await api.get(
'https://someurl.com'
)
const resultArray = Object.values(result.data.rows)
setAllCommunitiesFromSponsor(resultArray)
} catch (error) {
toast.error('Failed to fetch data from the server')
}
}
getAllCommunitiesFromSponsor()
}, [])
return allCommunitiesFromSponsor;
}
现在在您的组件中只需像使用其他任何钩子一样使用钩子:
const allCommunitiesFromSponsor = useCommunitiesForSponsor();
推荐阅读
- python - 如何从动态图中创建出现矩阵?
- python - 将 Python 与 Apache 一起使用的最快方法是什么?
- express - 如何在不更改 URL 的情况下更改快速路由器路径?
- gitlab - GitLab 合并请求有管道故障:-> 错误:作业失败:执行时间超过 1h0m0s 秒
- python - 分组两次后填充NaN值
- regex - 删除字符串直到第一次出现右括号
- php - 苗条的创建响应与 guzzle 流对于内容
- asp.net - SQL Server 列级加密和 ASP.NET API
- node.js - Moongoose 更新 slug
- paypal - 用户授权支付宝后自动提交表单是否合法?