【发布时间】:2020-10-17 18:34:32
【问题描述】:
下面是获取一些数据的代码
useEffect(async (id) => {
// const data = await redditFetch(id);
async function redditFetch(id){
try {
const {data:{data}} = await axios.get(`https://www.reddit.com/search.json?q=${id}&limit=50`);
const {children} = data;
return children.map(data=> data.data);
} catch (error) {
console.log(error);
}
}
const data = redditFetch(id);
setData(data)
},[setData])
console.log(Data);
这是返回的承诺:
Promise {<pending>}
__proto__: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: Array(50)
我想要的是 PromiseResult 中的数组。
我也尝试过使用异步等待这样的方法,它返回一个正确的数组。
const PostPage = () => {
const {id} = useParams();
const [Data, setData] = useState([])
useEffect(async (id) => {
// const data = await redditFetch(id);
async function redditFetch(id){
try {
const {data:{data}} = await axios.get(`https://www.reddit.com/search.json?q=${id}&limit=50`);
const {children} = data;
return children.map(data=> data.data);
} catch (error) {
console.log(error);
}
}
const data = await redditFetch(id);
setData(data)
},[setData])
console.log(Data);
但随之而来的是一个我无法摆脱的血腥警告:
index.js:1 警告:效果函数不得返回任何内容 除了一个用于清理的函数。
看起来你写了 useEffect(async () => ...) 或者返回了一个 承诺。相反,在你的效果中编写异步函数并调用 立即:
useEffect(() => { 异步函数 fetchData() { // 你可以在这里等待 常量响应 = 等待 MyAPI.getData(someId); // ... } fetchData(); }, [someId]); // 如果效果不需要 props 或 state,则为 []
所以,亲爱的程序员,告诉我该怎么做???
【问题讨论】:
-
警告信息告诉你该怎么做。它甚至还有示例代码。
-
我也试过了,但正如我所说,我得到了这个承诺....遗憾的是我不知道如何解构。这就是我在这里的原因
-
一般来说,我本可以忽略警告,但 Surge 和 GitHub 操作将警告视为错误,并且在警告存在时不会接受我的代码
-
警告说你应该使用
useEffect(() => { async function ...,而你有useEffect(async () => { async function ...你能看出区别吗? -
useEffect 前面的异步..现在我已经删除了..现在我有了这个:
标签: javascript reactjs web axios react-hooks