inflearn logo
강의

Course

Instructor

(2025 Latest Update) React: The Final Step to Becoming a Frontend Developer

8. Show Contact Information

연락처 검색 버튼이 작동하지 않아요

371

openuriz

5 asked

0

import React, { useState } from 'react';
import {Form, Row, Col, Button} from 'react-bootstrap' 
import { useDispatch, useSelector } from 'react-redux';  

const SearchBox = () => { 
   let [keyword, setKeyword] = useState('');
   let dispatch = useDispatch()
   const { contact } = useSelector((state) => state);          
   const searchByName = (event) => {
     event.preventDefault();         
      dispatch({ type: "SEARCH_BY_USERNAME", payload: { keyword } });      
     };   
    return (
     <Form onSubmit={searchByName} className='search-box'>        
        <Row>
             <Col lg={8}>
                 <Form.Control
                     type="text" 
                     placeholder="이름을 입력해주세요" 
                     onChange={(event) => setKeyword(event.target.value)} 
    \ />                             </Col>             <Col lg={4}>                 <Button variant="dark">찾기</Button>             </Col>         </Row>     </Form>   ) }  export default SearchBox 

위의 코드는 search-box 코드이고

const initialState = {
    contact: [],
    keyword: "",
}
const reducer = (state = initialState, action) => {
    let { type, payload } = action;
    switch (type) {
      case "ADD_CONTACT":
        state.contact.push({
          name: payload.name,
          phoneNumber: payload.phoneNumber,
        });
        break;
      case "SEARCH_BY_USERNAME":
        state.keyword = payload.keyword;
        break;
    }
  
    return { ...state };
  };
  
  export default reducer;

위의 코드는 reducer.js 코드

 

import React, { useEffect, useState } from "react";
import SearchBox from "./SearchBox";
import ContactItem from "./ContactItem";
import { useSelector } from "react-redux";

const ContactList = () => {
   
const { contact, keyword } = useSelector((state) => state);

 let [filteredList, setFilteredList] = useState([]);

  useEffect(() => {
    if (keyword !== "") {
      let list = contact.filter((item) => item.name.includes(keyword));
      setFilteredList(list);
    } else {
      setFilteredList(contact);
    }
  }, [keyword]);

  return (
    <div>
      <SearchBox />
      <div className="contact-list">
        num:{filteredList.length}
        {filteredList.map((item, idx) => (
          <ContactItem item={item} key={idx} />
        ))
        }
      </div>
    </div>
  );
};

export default ContactList

위코드는 contactList 코드입니다.

너무 안되서 선생님 코드를 그대로 복붙하고 아무리 찾아봐도 다른 부분이 없는데 검색 버튼을 눌러도 작동하지 않습니다. 왜 안되는걸까요? 선생님? 이걸로 밤새고 있습니다.

react redux web-api

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴이에요.

오류를 해결하기 위해 다음과 같이 확인해볼 수 있을 것 같습니다.

  1. 코드에서 오타나 문법 오류가 있는지 확인해주세요. 예를 들어, /> 태그가 이상하게 닫혀있는 것 같은데, 정확히는 이렇게 닫아주셔야 합니다: onChange={(event) => setKeyword(event.target.value)}/>

  2. 검색 버튼(<Button variant="dark">찾기</Button>)을 클릭했을 때 searchByName 함수가 호출되는지 확인해주세요. console.log()를 이용하여 searchByName 함수가 실행되었을 때 로그가 출력되는지 확인해보세요.

  3. searchByName 함수에서 dispatch하는 액션과 리듀서에서 해당 액션을 처리하는 코드가 제대로 구현되어 있는지 확인해주세요.

  4. 리덕스 스토어의 contact 상태가 제대로 업데이트되고 있는지 확인해보세요. console.log()를 이용하여 contact 상태를 출력해보고, 업데이트가 제대로 이루어지고 있는지 확인해보세요.

이렇게 확인해보시고도 문제가 해결되지 않는다면, 코드의 다른 부분이 문제를 일으킬 수도 있으니, 다른 부분도 확인해보시는 것을 추천드립니다.

모바일 버전에 쓰이는 이미지를 다운받고 싶어요

0

63

1

vite를 꼭 써야하나요

0

55

1

쇼핑몰관련 질문드립니다.

1

73

2

전체 소스코드는 어디서 받을 수 있나요?

0

238

1

소스코드는 어디서 받을 수 있는지요...

0

248

1

마지막 프로젝트 데모 페이지가 보이지 않습니다.

0

210

1

TMDB 사이트 API 가져오기

0

559

1

5.리덕스 유용한 툴 소개

1

287

1

json-server 최신버전이면 검색이 안나올 수 있습니다.

4

847

3

영화 API

0

790

2

더보기..

0

364

1

미니 쇼핑몰 작업하는 중에 리스트가 잘 안나옵니다.

1

378

1

매칭되는 action이 없을 때 반환값이요

0

370

1

openweather api 호출 했는데 401가 나요!

0

1321

1

React-Router 설치중오류

0

1915

1

api 인터셉터사용시 post

0

405

1

상세페이지 api

0

373

1

netlify에 REACT_APP_API_KEY 환변경변수 추가하고 배포해도 API_KEY가 없다고 에러가 나옵니다

0

408

1

예고편

0

280

2

reducer는 함수라고 해서 function을 넣으셨는데...

0

304

1

프로젝트 진행하다가 오류가 나서 더이상 진행을 못하고 있습니다 ㅠ

0

389

2

num에 사용한 {}

0

220

1

여기서 똑같이 썻는데. 저는 에러가 나는데 혹시 해결방법을 알려주실수있을까요?

0

646

1

Home.js 데이터 출력에러 질문드립니다.

0

279

2