我是ReactJS新手,正在其中创建一个简单的TODO应用程序.实际上,它是一个非常基本的应用程序,没有数据库连接,任务存储在一个数组中.我添加了编辑和删除功能,现在我想添加分页.

我该如何实现它?任何帮助都将不胜感激.非常感谢.

推荐答案

我最近在pure React JS中实现了分页.这是一个有效的演示:http://codepen.io/PiotrBerebecki/pen/pEYPbY

当然,您必须调整逻辑和页码的显示方式,以满足您的要求.

完整代码:

class TodoApp extends React.Component {
  constructor() {
    super();
    this.state = {
      todos: ['a','b','c','d','e','f','g','h','i','j','k'],
      currentPage: 1,
      todosPerPage: 3
    };
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick(event) {
    this.setState({
      currentPage: Number(event.target.id)
    });
  }

  render() {
    const { todos, currentPage, todosPerPage } = this.state;

    // Logic for displaying todos
    const indexOfLastTodo = currentPage * todosPerPage;
    const indexOfFirstTodo = indexOfLastTodo - todosPerPage;
    const currentTodos = todos.slice(indexOfFirstTodo, indexOfLastTodo);

    const renderTodos = currentTodos.map((todo, index) => {
      return <li key={index}>{todo}</li>;
    });

    // Logic for displaying page numbers
    const pageNumbers = [];
    for (let i = 1; i <= Math.ceil(todos.length / todosPerPage); i++) {
      pageNumbers.push(i);
    }

    const renderPageNumbers = pageNumbers.map(number => {
      return (
        <li
          key={number}
          id={number}
          onClick={this.handleClick}
        >
          {number}
        </li>
      );
    });

    return (
      <div>
        <ul>
          {renderTodos}
        </ul>
        <ul id="page-numbers">
          {renderPageNumbers}
        </ul>
      </div>
    );
  }
}


ReactDOM.render(
  <TodoApp />,
  document.getElementById('app')
);

Reactjs相关问答推荐

在此上下文中如何在缓冲(隐藏)视频和渲染视频之间切换?

在Reaction中单击时,按钮未按预期工作

FireBase未与Reaction应用程序连接

生成Reaction Vite应用程序的停靠容器时无法识别环境变量

使用REACT-RUTER-DOM链接仅更新一个搜索参数

如何使用.Aggregate从多个集合中获取数据,包括使用Mongoose+NextJS的SUM值

无法在REACTION TANSTACK查询中传递参数

未定义发送的数据无法在reactjs中找到原因

React 在第一次渲染时为 null

React Context API 在 Next.js 中更改路由时获取默认数据

如何优化 React 应用程序的性能?

React - 函数组件 - 点击两次问题处理

如何在 React 过滤器中包含价格过滤器逻辑?

Material UI @mui/material/Button vs @material-ui/core/Button,它什么时候改变的,旧版本的文档在哪里

无法访问 usefocusEffect 中 const 的更新状态

React 测试库 - 如何断言异步函数之间的中间状态?

Cypress 组件测试不渲染react 组件(但它的内容)

Material UI:使用 mui 手风琴时出现props 类型失败:isValidElement 不是函数

如何向 surveyjs 调查添加多个结尾?

在react 钩子中将数组添加到数组状态给出一个数字