我尝试用ReactJS创建一个新闻网站,当我尝试运行页面时,我收到三个不同的警告/错误。当我不包含标题时,我可以让它正确显示文章链接。在这种情况下,我仍然收到前两个警告,但当我尝试访问文章标题时,它根本不会加载页面。
任何帮助都将不胜感激。
警告/错误:
警告:列表中的每个子项都应该有唯一的“键”属性。
警告:标记上属性href
的值无效。
未捕获的错误:对象作为React子级无效(找到:键为{render}的对象)。如果要呈现子级集合,请改用数组。
LatestArticles.js
import React, { useState, useEffect } from "react";
import Article from "./Article";
function LatestArticles() {
const [posts, setPosts] = useState(React.useState("waiting..."));
function ArticleGrabber() {
useEffect(() => {
fetch("URL")
.then((response) => response.json())
.then((data) => {
setPosts(data);
console.log(data);
})
.catch((error) =>
console.log("Authorization failed: " + error.message)
);
}, []);
}
ArticleGrabber();
return (
<div>
<h3>Latest Articles</h3>
{posts.map((post, index) => (
<ul>
<Article key={index} post={post} />
</ul>
))}
</div>
);
}
export default LatestArticles;
Article.js
import React from "react";
import "../Article.css";
function Article(post) {
return (
<div className="theArticle">
<h3>{post.post.title.rendered}</h3>
<a href={post.post.link}>Article content</a>
</div>
);
}
export default Article;
2条答案
按热度按时间rt4zxlrg1#
警告:列表中的每个子元素都应该有唯一的“键”属性。
*添加
keys
时,您需要将其添加到项目的父元素(在本例中为ul
标记)。警告:标记上prop href的值无效。
未捕获的错误:对象作为React子级无效(找到:如果要呈现子对象的集合,请改用数组。
对于这两个错误,可能是由于您获取数据的方式,但我首先要研究几件事:
1.您正在React钩子中使用react钩子(
useState
和React.useState
),而不是将默认值设为空array
。1.把你的useEffect从你的函数中去掉,因为它只在有副作用的时候运行......我会完全删除你的函数,只坚持通过
useEffect
渲染你的帖子,这应该会起作用。nfg76nw02#
据我所知,我看到了两个问题。1.内部状态和UseEffect钩子。试试这个: