在使用react classcomponent时,我无法在状态部分设置状态,我试图从API设置一个数字和一个数组,我无法设置两者,数字也显示未定义。
api中也没有错误,如果我尝试console.log它,它工作得很好。请帮我解决这个问题。
import React, { Component } from "react";
import RSSParser from "rss-parser";
class BlogFeed extends Component {
constructor(props) {
super(props);
this.state = {
number: 0,
items:[],
feed:[]
};
this.makeTimer();
}
makeTimer() {
setInterval(() => {
let rand = Math.floor(Math.random() * 10) + 1;
this.setState({ number: rand });
}, 1000);
}
componentDidMount = () =>{
let parser = new RSSParser();
parser.parseURL(`https://7targets.ai/blog/feed.xml`, function (err, feed) {
if (err) throw err;
this.setState({items : feed.items});
});
}
render() {
console.log(this.items)
return (
<div>
<h1>Random Number :{this.state.items[this.state.number]}</h1>
</div>
);
}
}
export default BlogFeed;
你把箭头函数和正则函数混在一起了。
修复componentDidMount
:
componentDidMount = () =>{
let parser = new RSSParser();
parser.parseURL(`https://7targets.ai/blog/feed.xml`, (err, feed) => {
// ^---turn it into arrow fn
if (err) throw err;
this.setState({items : feed.items});
});
}