【发布时间】:2021-06-04 22:39:14
【问题描述】:
我是 React 和 Typescript 的新手,我有一些包含内容的博客,我正在尝试为其添加分页。
我看了this tutorial 并写了那个组件用于分页:
import React from 'react'
export const Pagination = (totalPagesX:any, paginate :any) => {
const pageNumbers=[];
const size=Math.ceil(totalPagesX.totalPages);
for (let index = 1; index <=size; index++) {
pageNumbers.push(index);
}
return (
<nav>
<ul className='pagination'>
{pageNumbers.map((number)=>(
<li key={number} className='page-item'>
<Pagination totalPages={+totalPages} paginate={paginate} />
{number}
</a>
</li>
))}
</ul>
</nav>
)
}
现在参数 paginate 是我的 App 类中的一个函数:
export class App extends React.PureComponent<{}, AppState> {
state: AppState = {
currentPage: 1,
totalPages:'10',
}
async componentDidMount() {
this.setState({
totalPages: await api.getTotalPages(),
});
}
paginate=(pageNumber:number)=>{console.log("number",number)};
render() {
const { currentPage, totalPages } = this.state;
return (<main>
<ThemeProvider>
<Page />
</ThemeProvider>
<Pagination totalPages={+totalPages} paginate={this.paginate} />
</footer>
</main>)
}}
但每次我尝试转到下一页时都会收到此错误:
> TypeError: paginate is not a function
19 | <ul className='pagination'>
> 20 |{pageNumbers.map((number)=>(21 |<li key={number}
> className='page-item'>
> > 22 |<a className='page-link' href='!#' onClick={(number) => paginate(number)}>
>| ^ 23 |{number}24 |</a> 25 | </li>
【问题讨论】:
-
我使用的是 ":any" 类型,因为如果删除它我会得到另一个错误:" 绑定元素 'paginate' 隐式具有 'any' 类型。
-
我看到你的代码中有很多错误。如果我为您解决所有这些问题,您将不会学到任何东西。你能再试试教程吗?也许您会自己解决其中的一些问题,然后,其余的问题,我们可以帮助您解决。例如。
(totalPagesX:any, paginate :any)和<Pagination totalPages={+totalPages} paginate={this.paginate} />和paginate=(pageNumber:number)=>{console.log("number",number)};和<Pagination totalPages={+totalPages} paginate={this.componentDidMount} />是错误的。而且我不明白你为什么在Pagination组件中调用Pagination组件? -
好的,那我再试一次,谢谢!!
-
您在 Pagination 组件中使用
。不需要这个。您可以使用 li 标签来管理它。 -
@ajeet-shah,再次感谢您。我修复了您告诉我的所有内容,除了(totalPagesX:any,paginate :any),因为那时我收到错误:“隐式绑定元素'分页'有一个“任何”类型。我仍然有同样的错误。
标签: javascript reactjs typescript pagination