【发布时间】:2020-05-16 21:58:45
【问题描述】:
以下组件有什么问题? 它抛出一个错误,而具有生命周期方法的原始基于类的版本工作正常?
import React, { useState, useEffect } from "react";
import axios from "axios";
const NewsHook = ()=> {
const [mount, setMount] = useState(false);
const [news, setNews] = useState([]);
useEffect(() => {
setMount(true);
axios.get('https://hn.algolia.com/api/v1/search?query=react')
.then(result => {
if (mount){
setNews({
news: result.data.hits,
})
}
}
);
return () => {
setMount(false);
}
}, [mount]);
return (
<ul>
{news.map(topic => (
<li key={topic.objectID}>{topic.title}</li>
))}
</ul>
);
}
export default NewsHook
【问题讨论】:
-
hier 是原始的基于类的版本,带有生命周期方法
-
“它会引发错误”。请添加错误
-
好吧。我看到的错误之一是您将 news 设置为 setNews({news: result.data.hits}) 这是 news.news[] 但是当您映射主题时,您映射的是对象而不是对象数组。正确的地图是 news.news.map()
-
我无法发布只有 39 个字符的基于类的版本,因为太长而被拒绝
-
你遇到了什么错误?
标签: javascript reactjs react-hooks react-functional-component