【发布时间】:2020-09-03 12:07:28
【问题描述】:
如下image,有分页设置。如何在用户点击page no.时设置分页效果
下面是我的 src 代码,但在获取数据时输出得到 null 值。
端点网址:http://localhost:8000/api/blog_list?page=
./src/BlogList.js
class App extends Component {
constructor(props) {
super(props);
this.state = {
value: "",
response: "",
};
function pageClick(e){
this.setState({value: e.target.innerHTML});
this.fetchData();
};
}
componentDidMount() {
this.fetchData();
}
fetchData = async () => {
try {
const response = await fetch(
`http://localhost:8000/api/blog_list?page=${this.state.value}`
);
const JsonResponse = await response.json();
this.setState({ response: JsonResponse });
}
catch (error) {
console.log(error);
}
};
render() {
const { response } = this.state;
if (!response) {
return "Loading...";
}
return (
<div>
{response.results.map((response) =>(
<div class="col-md-12">
<img src={response.image} className="App-logo"/>
<div class="text text-2 pl-md-4">
<h3 class="mb-2">{response.title}</h3>
</div>
</div>
))}
<div class="col">
<ul>
<li><a href="#"><</a></li>
<li class="active"><span onClick={this.pageClick}>1</span></li>
<li><a href="#" onClick={this.pageClick}>2</a></li>
<li><a href="#" onClick={this.pageClick}>3</a></li>
<li><a href="#" onClick={this.pageClick}>4</a></li>
<li><a href="#" onClick={this.pageClick}>5</a></li>
<li><a href="#">></a></li>
</ul>
</div>
</div>
);
}
}
export default App;
【问题讨论】:
-
setState可能是异步的。当后续操作依赖于this.state具有更新的值时,您应该将其作为setState的第二个参数放在回调中:this.setState({value: e.target.innerHTML}, () => this.fetchData()) ;
标签: javascript reactjs