【发布时间】:2016-09-30 04:26:21
【问题描述】:
我是 ReactJS 的新手,我正在做的一件事是分页。 ReactJS 是制作复杂 UI 视图的好工具,但有时最简单的东西却是最难的。我可以用 jQuery 来做,但我想用 React 来做。
基本上,我希望有一种“加载更多”的分页样式,其中项目附加到正文(如新闻提要)。在我的代码中,我执行 ajax 请求来获取数据,将其放入状态变量中,然后渲染 DOM。我只用一页数据就成功完成了这项工作,因为我为项目创建了一个新变量。
onCallSuccessGetListings: function(data) {
this.setState({ hasSuccess: data.success });
if(data.success !== false) {
this.setState({
hasSuccess: JSON.parse(data).success,
newListings: false
});
if(this.props.hasClickedPagination) {
this.setState({
newListings: JSON.parse(data).result
});
} else {
this.setState({
listings: JSON.parse(data).result
});
}
}
},
基本上,我知道该人何时单击“加载更多”,然后我使用一个新变量来存储数据。这是渲染函数:
render: function() {
var markup = [],
nextMarkup = [];
if(this.state.hasSuccess) {
markup = Object.keys(this.state.listings).map(function(value){
return (
<div className="property__item" key={value}>
blablabla
</div>
)
}, this)
if(this.state.newListings !== false) {
nextMarkup = Object.keys(this.state.newListings).map(function(value){
return (
<div className="property__item" key={value}>
blablabla
</div>
)
}, this)
}
} else {
markup.push(<p key="1">No results</p>)
}
return (
<div className="property__list--grid">
{ markup }
{ nextMarkup }
</div>
);
}
如您所见,我正在复制代码,但找不到“React”风格的方法。当用户再点击“加载更多”10 次时,我不想创建 10 个变量。
如果有人可以提供帮助,那就太好了。我想不出解决办法,而且这几天一直困扰着我。
非常感谢。
【问题讨论】:
标签: javascript ajax reactjs pagination