代码之家  ›  专栏  ›  技术社区  ›  claudiopb

带ReactJS的Paginaton

  •  0
  • claudiopb  · 技术社区  · 6 年前

    https://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 current 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')
    );
    

    因此,我想将初始数组更改为关联数组,方法是放置一个新的键“elements”,如下所示:

     "todos": {
      "elements":
    ['a','b','c','d','e','f','g','h','i','j','k']
    },
    

    更改后如何捕获这些数据?我试过这样做:

    const currentTodos = todos.map((t, index)=>{         
                t.elements.map((e,index)=>{             
                    e.slice(indexOfFirstTodo, indexOfLastTodo);           
                })    
            })
    

    但没有成功

    2 回复  |  直到 6 年前
        1
  •  1
  •   UjinT34    6 年前

    slice https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

    你把你的阵法从 todos todos.elements :

    const currentTodos = todos.elements.slice(indexOfFirstTodo, indexOfLastTodo);
    
        2
  •  0
  •   Ahsan Sohail    6 年前

    在这个模型中,todos是一个对象而不是数组,map()是数组的javascript函数。

    "todos": {
      "elements":
    ['a','b','c','d','e','f','g','h','i','j','k']
    },
    

    这将帮助您使用javascript实现分页 skip take methods with javascript arrays

    从最适合你的情况的链接回答

    var ary = [0,1,2,3,4,5,6,7];
    alert(ary.splice(0,3).join(','));