自定义数据上传挂钩
Сustom data upload hook
我编写了一个简单的代码,在页面加载时从本地 json 服务器请求数据。我在几个地方重复了这段代码,我想把它放在自定义挂钩中。
告诉我如何正确编写和应用自定义挂钩?
const [data, setData] = useState()
useEffect(() => {
const getPosts = async () => {
try {
setData(await getData('http://localhost:3001/posts'))
} catch (error) {
console.log('ERROR >>', error.message)
}
}
getPosts()
}, [])
我试过这样写,但是不行:
import { useEffect, useState } from "react"
import { getData } from './../helpers'
const useData = url => {
const [currentData, setCurrentData] = useState()
useEffect(() => {
const getCurrentData = async () => {
try {
setCurrentData(await getData(url))
} catch (error) {
console.log('ERROR >>', error.message)
}
}
getCurrentData()
}, [url])
return currentData
}
export default useData
请检查这个沙箱,这似乎在每个页面加载一次时加载数据。我只是不在 useEffect
中传递 URL 因为我只想在页面加载时调用它一次。
https://codesandbox.io/s/dank-sky-6fs4rq?file=/src/useData.jsx
我编写了一个简单的代码,在页面加载时从本地 json 服务器请求数据。我在几个地方重复了这段代码,我想把它放在自定义挂钩中。
告诉我如何正确编写和应用自定义挂钩?
const [data, setData] = useState()
useEffect(() => {
const getPosts = async () => {
try {
setData(await getData('http://localhost:3001/posts'))
} catch (error) {
console.log('ERROR >>', error.message)
}
}
getPosts()
}, [])
我试过这样写,但是不行:
import { useEffect, useState } from "react"
import { getData } from './../helpers'
const useData = url => {
const [currentData, setCurrentData] = useState()
useEffect(() => {
const getCurrentData = async () => {
try {
setCurrentData(await getData(url))
} catch (error) {
console.log('ERROR >>', error.message)
}
}
getCurrentData()
}, [url])
return currentData
}
export default useData
请检查这个沙箱,这似乎在每个页面加载一次时加载数据。我只是不在 useEffect
中传递 URL 因为我只想在页面加载时调用它一次。
https://codesandbox.io/s/dank-sky-6fs4rq?file=/src/useData.jsx