Skip to content

14. 배열에 항목 제거하기 · GitBook #62

Description

@utterances-bot

14. 배열에 항목 제거하기 · GitBook

https://react.vlpt.us/basic/14-array-remove.html

Activity

  1. harrdas commented on Jan 5, 2021

    @harrdas

    onClick={() => onRemove(user.id)} 이 코드는 잘 동작하는데
    onClick={onRemove(user.id)} 이 코드는 왜 동작하지 않는건가요?
    혹시 아시는 분 계시면 알려주시면 감사하겠습니다.

  2. taeheonha1 commented on Jan 5, 2021

    @taeheonha1

    jsx 외부에서 정의되어진 event hander나 callback로 parameter를 pass할 때 arrow function을 씁니다.

    https://reactjs.org/docs/faq-functions.html#how-do-i-pass-an-event-handler-like-onclick-to-a-component

    현재의 User component에서 onRemove와 함께 id를 pass하여, UserList component를 통하고, App component에서 정의된 onRemove까지 id를 pass 하고 있는 것을 볼 수 있습니다.

  3. harrdas commented on Jan 6, 2021

    @harrdas

    @taeheonha1 답변 감사합니다. 그렇다면 CreateUser.js에서 onChange={onChange}가 가능한 이유는 parameter가 없어서 그런건가요?
    왜 parameter가 있을땐 arrow function을 써야하는건가요? 이건 리액트에서 그렇게 제공하기 때문인걸까요

  4. lacomparte commented on Jan 13, 2021

    @lacomparte

    @harrdas 님
    onClick={onRemove(user.id)} 로 하면 바로 실행되어 버립니다.

  5. 1005hoon commented on Mar 19, 2021

    @1005hoon

    아래분 질문 답 드릴게요.

    질문 ------
    onClick={() => onRemove(user.id)} 이 코드는 잘 동작하는데
    onClick={onRemove(user.id)} 이 코드는 왜 동작하지 않는건가요?

    답변 ---
    onClick={someFunction()} 을 해버리면 해당 콤포넌트가 렌더링이 되는것과 동시에 someFunction함수를 실행시켜버립니다.

    그래서 보통 onClick={someFunction} 으로 지정해서 () 를 제외하는 방법으로 함수가 즉시실행 되지 않게 하고, 클릭했을때 실행이 되도록 해주죠

    그런데 예제와 같이 onRemove의 경우, 해당 함수가 실행될 떄 아이디 값도 받아와야 하잖아요.
    이런 경우에 onClick = { onRemove(user.id) } 를 해버리면, 해당 콤포넌트가 렌더링됨가 동시에 이 함수 실행이 되어버려서 아마 아무것도 렌더링이 되어버리지 않을거에요. 콘솔에서도 오류메시지가 발생할거구요.

    따라서 이런 문제들을 해결하기 위해 onClick에 콜백 함수를 넣어주고, 해당 함수가 실행될 때 user.id를 건네주어 실행시키는 방법으로 처리를 하는거에요

  6. DoK6n commented on May 4, 2021

    @DoK6n

    1005hoon님만 제대로 자세하게 답변해주셨네요 자세하면서도 왜 그런지 정확하게 답변해주심 .. 감사합니다..

  7. wenodev commented on Jul 8, 2021

    @wenodev

    배열에서 요소 지우기

    • filter를 사용하여 false 인 값만 담는다.
    • 태그에서 변수를 전달하고 싶을땐 아래와 같이 작성한다.
    <button onClick={() => onRemove(param)}>

    복습

    • input에서 onCick의 event 객체의 경우 위와 같이 변수로 전달해줄 필요 없다. (class형에서는 어떻게 동작할지 알아봐야한다.)
  8. yeoleap commented on Aug 9, 2021

    @yeoleap

    감사합니다!!!

  9. jwu-ice commented on Sep 24, 2021

    @jwu-ice

    잘봤습니다~

  10. JustJOSU commented on Oct 7, 2021

    @JustJOSU

    @1005hoon 덕분에 onRemove는 왜 arrow function을 사용하게 됐는지 아주 잘 이해됐습니다. 정말 감사합니다!!!

  11. 1wooseok commented on Feb 21, 2022

    @1wooseok

    onClick={() => onRemove(user.id)} === onClick={function () {onRemove(user.id)}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions