• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 sort 가격순정렬시 제품순서가 이상해지는증상? 질문입니다.

sort 가격순정렬시 제품순서가 이상해지는증상? 질문입니다.

  • 이 주제에는 3개 답변, 2명 참여가 있으며 codingapple3 년 전에 전에 마지막으로 업데이트했습니다.
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #41531

    박지오
    참가자
    sort을 사용하여 가격높은순 낮은순을 구현하였습니다.
    클릭했을시 가격순서에따라 바뀌는게아니고 뒤죽박죽으로 섞이는상황입니다. (제품리스트 화면에서)
    근데 또 클릭해서 디테일페이지로 들어가면 정상적으로 가격순으로 나오구요. (consloe.log 찍었을때도 디테일페이지는 가격순으로 정렬잘됩니다.)
    결론은 제품리스트에선 뒤죽박죽으로 정렬
    디테일페이지에선 제대로나옴 이상황인건데 어떻게 해결해야할까요 
    하루종일 찾아봐도 답이안나와서 질문드립니다
     
    #41538

    codingapple
    키 마스터
    아마 정렬하는코드가 이상한것이 아닐까요
    #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;
     
     
    
    
    
    #41617

    codingapple
    키 마스터
    slice 하는거 없애고 map() 안의 파라미터에 있는 {} 빼고 해봅시다
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠