【发布时间】:2021-10-04 11:42:33
【问题描述】:
我正在使用 React JS 构建一个新闻应用程序。我正在使用 News API 来收集数据。我通过使用 setState 更新 URL 添加了下一个和上一个按钮来显示下一个新闻。但问题是 URL 没有更新。 URL 的一部分是 &page=1,我想将其更改为 &page=2,当我检查它发送 &page=NaN 时,我不知道为什么会这样。这是代码:-
import React, { Component } from "react";
import NewsItems from "./NewsItems";
import PreviousIcon from "@material-ui/icons/ArrowBack";
import NextIcon from "@material-ui/icons/ArrowForward";
export default class News extends Component {
constructor() {
super();
this.state = {
articles: [],
loading: false,
};
}
async componentDidMount() {
let url =
"https://newsapi.org/v2/top-headlines?country=in&apiKey=myapikey&page=1&pageSize=20";
let data = await fetch(url);
let parsedData = await data.json();
this.setState({ articles: parsedData.articles });
}
handlePrev = async () => {
console.log("previous");
let url = `https://newsapi.org/v2/top-headlines?country=in&apiKey=myapikey&page=${
this.state.page - 1
}&pageSize=20`;
let data = await fetch(url);
let parsedData = await data.json();
this.setState({
page: this.state.page - 1,
articles: parsedData.articles,
});
};
handleNext = async () => {
console.log("Next");
let url = `https://newsapi.org/v2/top-headlines?country=in&apiKey=myapikey&page=${
this.state.page + 1
}&pageSize=20`;
let data = await fetch(url);
let parsedData = await data.json();
this.setState({
page: this.state.page + 1,
articles: parsedData.articles,
});
};
render() {
return (
<div className="news">
<h1 className="head">SpiceHunt - Top headings</h1>
<div className="news-items">
{this.state.articles.map((element) => {
return (
<NewsItems
key={element.url}
title={element.title}
description={element.description}
img={element.urlToImage}
tag={element.author}
newsUrl={element.url}
/>
);
})}
</div>
<div className="pg-btn">
<button
className="page-btn"
disabled={this.state.page <= 1}
type="button"
onClick={this.handlePrev}
>
<PreviousIcon /> Previous
</button>
<button className="page-btn" type="button" onClick={this.handleNext}>
Next <NextIcon />
</button>
</div>
</div>
);
}
}
我是 React JS 的初学者,这是我在 Stackoverflow 中遇到的第一个问题。我非常希望我能得到解决方案。
【问题讨论】:
-
state.page 的初始值没有设置
标签: javascript reactjs setstate