我试图按位置排序我的表添加这段代码到我的代码,但我只得到第一个#1位置的权利,然后我得到随机位置。我试图删除分页只是以防万一,这是问题,但它似乎不是我得到相同的结果没有分页。
我添加到排序表的代码段
const sortData = fetchData && player?.sort((a, b) => a.position > b.position ? 1 : -1)
我的代码
import axios from "axios";
import React, { useState, useEffect } from "react";
import Pagination from "https://cdn.skypack.dev/rc-pagination@3.1.15";
const News = () => {
const [playerName, setPlayerName] = useState([]);
const [playerRank, setPlayerRank] = useState([]);
const [player, setPlayer] = useState([]);
const [perPage, setPerPage] = useState(10);
const [size, setSize] = useState(perPage);
const [current, setCurrent] = useState(1);
const [players, setPlayers] = useState();
const fetchData = () => {
const playerAPI = 'http://localhost:3008/api/players';
const playerRank = 'http://localhost:3008/api/highscore/players';
const getINFOPlayer = axios.get(playerAPI)
const getPlayerRank = axios.get(playerRank)
axios.all([getINFOPlayer, getPlayerRank]).then(
axios.spread((...allData) => {
const allDataPlayer = allData[0].data.players
const getINFOPlayerRank = allData[1].data.players
const newPlayer = allDataPlayer.map(name => {
const pr = getINFOPlayerRank.find(rank => name.id === rank.id)
return {
id: name.id,
name: name.name,
status: name.status,
alliance: name.alliance,
position: pr?.position,
score: pr?.score
}
})
setPlayerName(allDataPlayer)
setPlayerRank(getINFOPlayerRank)
console.log(newPlayer)
setPlayer(newPlayer)
})
)
}
useEffect(() => {
fetchData()
}, [])
const PerPageChange = (value) => {
setSize(value);
const newPerPage = Math.ceil(players.length / value);
if (current > newPerPage) {
setCurrent(newPerPage);
}
}
const getData = (current, pageSize) => {
// Normally you should get the data from the server
return player?.slice((current - 1) * pageSize, current * pageSize);
};
const sortData = fetchData && player?.sort((a, b) => a.position > b.position ? 1 : -1)
const PaginationChange = (page, pageSize) => {
setCurrent(page);
setSize(pageSize)
}
const PrevNextArrow = (current, type, originalElement) => {
if (type === 'prev') {
return <button><i className="fa fa-angle-double-left"></i></button>;
}
if (type === 'next') {
return <button><i className="fa fa-angle-double-right"></i></button>;
}
return originalElement;
}
return (
<>
<div className="container-fluid mt-5 mb-5">
<div className="row justify-content-center">
<div className="col-md-10">
<div className="card">
<div className="card-body p-0">
<div className="table-responsive">
<table className="table table-text-small mb-0">
<thead className="thead-primary table-sorting">
<tr>
<th>#</th>
<th>Name</th>
<th>Points</th>
<th>Alliance</th>
<th>Status</th>
</tr>
</thead>
<tbody>
{getData(current, size)
.map((player) => {
return (
<tr key={player.name}>
<td>{player.position}</td>
<td>{player.name}</td>
<td>{player.score}</td>
<td>{player.alliance}</td>
<td>{player.status}</td>
</tr>
);
})}
</tbody>
</table>
</div>
<div className="table-filter-info">
<Pagination
className="pagination-data"
showTotal={(total, range) => `Showing ${range[0]}-${range[1]} of ${total}`}
onChange={PaginationChange}
total={player.length}
current={current}
pageSize={size}
showSizeChanger={false}
itemRender={PrevNextArrow}
onShowSizeChange={PerPageChange}
/>
</div>
</div>
</div>
</div>
</div>
</div>
</>
)
}
1条答案
按热度按时间nzk0hqpo1#
回答感谢JME11
来源:stackoverflow.com/a/27002612/3577849