Skip to content

Instantly share code, notes, and snippets.

View maisonm's full-sized avatar
🌴
On vacation (in my mind)

Maison Moa maisonm

🌴
On vacation (in my mind)
  • Florida
View GitHub Profile
@maisonm
maisonm / UsersPage.js
Created July 6, 2020 19:15
Container component for the example
import React from 'react';
//Styles
import { UsersPageContainer } from './styles';
//Components
import UserTable from '../UserTable/UserTable';
const UsersPage = () => {
return (
@maisonm
maisonm / UserTable.js
Created July 6, 2020 18:03
The entire UserTable.js component
import React, { useState, useEffect } from 'react';
//Styles
import {
UserTableContainer,
UserCardContainer,
UserTableHeader,
Age,
Name,
Email,
@maisonm
maisonm / Paginate.js
Created July 6, 2020 16:57
Rendering page numbers
pageNumberRender = () => {
const { totalPages, currentClickedNumber } = this.state;
let pages = [];
for (let i = 1; i < totalPages + 1; i++) {
pages.push(
<PageNumber
onClick={(e) => {
this.setCurrentClickedNumber(e);
}}
isClicked={currentClickedNumber === i ? true : false}
@maisonm
maisonm / Paginate.js
Created July 6, 2020 16:36
Lifecycle methods
componentDidMount() {
this.determineNumberOfPages();
}
componentDidUpdate(prevProps, prevState) {
const { data, setData } = this.props;
const { currentClickedNumber, pageData } = this.state;
if (data !== prevProps.data) {
this.determineNumberOfPages();
moveOnePageForward = () => {
const { dataStartingIndex, totalPages, currentClickedNumber } = this.state;
if (dataStartingIndex) {
this.setState({
dataStartingIndex: null,
currentClickedNumber: 2
});
} else {
this.setState({
setCurrentClickedNumber = e => {
const { target } = e;
this.setState({
currentClickedNumber: parseInt(target.innerText)
});
};
moveToLastPage = () => {
this.setState({
currentClickedNumber: this.state.totalPages,
this.setState({
totalPages: chunkArray.length,
dataStartingIndex: itemsPerPage,
pageData: paginatedDataObject,
clickedOnNumber: 1
});
determineNumberOfPages = () => {
const { data, itemsPerPage } = this.props;
let paginatedDataObject = {};
let index = 0;
let dataLength = data.length;
let chunkArray = [];
for (index = 0; index < dataLength; index += itemsPerPage) {
let newChunk = data.slice(index, index + itemsPerPage);
<Paginate
data={data}
setData={setDataFunction}
itemsPerPage={usersPerPage}
/>
constructor(props) {
super(props);
this.state = {
totalPages: null,
dataStartingIndex: null,
dataLastIndex: 0,
currentClickedNumber: 1,
pageData: null
};