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

home2 게시판 React 게시판 선생님! 개인 플젝 도움 요청드립니다!!

선생님! 개인 플젝 도움 요청드립니다!!

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #73364

    Marco
    참가자
    상위 페이지에서 검색 버튼 만들어 
    axios get요청으로 서버에서 검색결과 데이터를 받아
    state에 저장하고 하위 컴포넌트 search에 props를 전달해
    search 페이지에 검색 결과를 뿌려주려고 합니다
    
    console.log 찍어본 결과
    버튼 클릭시 검색데이터는 잘 출력되는데
    search 컴포넌트에서는 undefined가 출력됩니다
    
    이렇게 저렇게 해봐도 하위 컴포넌트에서 props값을 못받아오는 것 같은데
    검색버튼 클릭시 state에 저장하는 코드가 문제일까요..??
    
    도움 요청 드립니다 ㅜㅠ
    
    //// server.js
    app.get('/search', (req, res) => {
    let searchRule = [
     {
     $search: {
     index: 'artistSearch',
     text: {
     query: req.query.value,
     path: "artist"
     }
     }
     },
     { $sort : { _id : -1 }}
     ]
     console.log(req.query);
     db.collection('showlist').aggregate(searchRule).toArray((err, result) => {
     res.send(result)
     })
    });
    
    
    //// App.js
    
    let [ search, setSearch ] = useState('');
    let [ searchResult, setSearchResult ] = useState([]);
    
    <Routes>
    <Route path='/' element={
    <>
    <span className='main-sc-box'>
    <span className='ip-wrap'>
    <input type="text" id='search-box' onChange={(e) => {setSearch(e.target.value);}} />
    <button id='search' onClick={() => {
     axios.get(`/search?value=${search}`).then((result) => {
     console.log(result.data);
    setSearchResult(...result.data);
    navigate(`/search?value=${search}`)
     }).catch(() => {
     console.log('실패')
     })}}>검색</button>
    </span>
    </span>
    <div className='card'>
    {
     [...readData].slice(0).reverse().map((show, i) => {
    return (
    <Card show={show} key={show._id} login={login} />
     )
     })
    }
    </div>
    </>
    } />
    <Route path='/add' element={<Add />} />
    <Route path='/fail' element={<Fail />} />
    <Route path='/edit/:id' element={<Edit readData={readData} />} />
    <Route path='/search' element={<Search login={login} />} searchResult={searchResult} />
    </Routes>
    //// Search.js
    
    import React, { useEffect, useState } from 'react';
    import Card from './Card.js';
    function Search({ login, searchResult }) {
    let [ searchData, setSearchData ] = useState([]);
    useEffect(() => {
     console.log(login)
     console.log(searchData);
    setSearchData(searchResult);
     
    return () => {
     
     }
     }, [])
     
    return (
    <>
    <div className="card">
     검색결과임
    {/* {
     [...searchResult].slice(0).reverse().map((show, i) => {
     return (
     <Card show={show} key={show._id} login={login} />
     )
     })
     } */}
    </div>
    </>
     );
    }
    export default Search;
     
    
    
    
    
    
    #73377

    codingapple
    키 마스터
    searchResult에 뭐 있으면 코드실행해달라고 if문 씁시다 
    props를 state에 다시 집어넣는건 좋지 않습니다
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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