4 글 보임 - 1 에서 4 까지 (총 4 중에서)
-
글쓴이글
-
2022년 8월 9일 18:38 #41531
박지오참가자sort을 사용하여 가격높은순 낮은순을 구현하였습니다. 클릭했을시 가격순서에따라 바뀌는게아니고 뒤죽박죽으로 섞이는상황입니다. (제품리스트 화면에서) 근데 또 클릭해서 디테일페이지로 들어가면 정상적으로 가격순으로 나오구요. (consloe.log 찍었을때도 디테일페이지는 가격순으로 정렬잘됩니다.) 결론은 제품리스트에선 뒤죽박죽으로 정렬 디테일페이지에선 제대로나옴 이상황인건데 어떻게 해결해야할까요 하루종일 찾아봐도 답이안나와서 질문드립니다
2022년 8월 10일 02:35 #41583
박지오참가자코트첨부하겠습니다 ..!
import { useState, useEffect } from "react"; import Pagination from "../Pagination"; import styles from "../css/List.module.css"; import { Link, Navigate, useNavigate, useParams } from "react-router-dom"; import { useDispatch } from "react-redux"; import Category from "../component/Category"; import axios from "axios"; import Footer from "../component/Footer"; import ScrollTop from "../component/ScrollTop";
function Tech(props) { const { id } = useParams();
const [posts, setPosts] = useState([]); //데이터 받아오는 함수
const [limit, setLimit] = useState(4); const [page, setPage] = useState(1); const offset = (page - 1) * limit;
useEffect(() => { axios .get( "https://raw.githubusercontent.com/mdab4793/shop/main/Tech/Tech.json" ) .then((result) => { setPosts(result.data); }); }, []); function LowPrice() { //가격낮은순 함수 let low = [...posts]; low = low.sort((a, b) => a.price - b.price); setPosts(low); console.log(posts.sort()); }
function HighPrice() { //가격높은순 함수 let high = [...posts]; high = high.sort((a, b) => b.price - a.price); setPosts(high); console.log(posts.sort()); }
return ( <body className={styles.container}> <button //가격낮은순으로 정렬 onClick={() => { LowPrice(); }} > LowPrice </button>{" "} <button //가격높은순으로 정렬 onClick={() => { HighPrice(); }} > HighPrice </button> <main className={styles.main}> {posts.slice(offset, offset + limit).map(({ id }) => { return ( <section className={styles.section} key={id}> <div className={styles.wrapper}> <Link to={`/techdetail/${id}`}>
</Link> <h3>{posts[id]?.title}</h3> <div> <p>${posts[id]?.price}</p> </div> </div> </section> ); })}
</main>{" "} <ScrollTop /> <div> <Pagination total={posts.length} limit={limit} page={page} setPage={setPage} /> </div> <footer className={styles.footer}> <Footer /> </footer> </body> ); }
export default Tech;
-
글쓴이글
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
- 답변은 로그인 후 가능합니다.