더 재사용 가능한 구성 요소 :반작용 나는 다음과 같은 소품이 자동 완성 구성 요소가
value
(디스플레이 텍스트),onChange
는 (모든 키 입력에 해고)
onSelect
(사용자가
제안 목록에서 무엇인가를 선택하면 선택한 객체 전달 + 선택한 객체의 텍스트 표시 -value
과 동일)
상태 : - suggestionsList
(구성 요소 내부에있는 상태이므로 결정했습니다.)
보기 중 하나에서이 구성 요소의 상위 항목은 각 키 입력 후 value
을 신경 쓰지 않습니다. 그냥 onSelect
처리기로 전달 된 선택한 항목에 관심이 있습니다. 따라서이 시나리오에서는 value
& onChange
소품이 필요하지 않습니다. value
은 자동 완성 구성 요소의 내부 상태가 될 수 있습니다.
그러나 다른보기 중 하나에서 부모는 각 키 입력에 대해서도 알고 싶어합니다. 이것은 부모가 자신의 주에서 value
을 잡고 소품으로 전달해야한다는 것을 의미합니다. onChange
소품은 부모에게 상태를 변경하도록 알리는데도 필요합니다.
두 시나리오를 모두 처리하도록 자동 완성 구성 요소를 구성하는 방법은 무엇입니까? 어느 속성이 소품이어야하며 어느 상태 여야합니까?
의견을 보내 주시면 감사하겠습니다.
부모가 그 상태에서 값을 보유 할 필요가 없다면 값을 검색 할 수있는'onChange' 핸들러를 제공하면됩니다. 그것의 상태에있는 가치를 붙들어 야 할지도 모르다, * *에는 * 없다. 따라서 컴포넌트가 onChange 프라퍼티 (부모로부터의 함수)를 받으면 자체 onChange와 함께 호출해야합니다. –
@DaveNewton 감사합니다. 유용한 제안입니다. 첫 번째 시나리오는 부모가 '가치'를 필요로하지 않는다는 질문에서 가정합니다. 내 구성 요소의 'value'를 내부 상태로 변경하고 부모에게'onSelect' 소품 처리기로 선택된 항목에 대한 알림을 보냅니다. 지금까지는 괜찮습니다. 두 번째 시나리오는 어떨까요 (부모는 각 키 입력에서 업데이트를 원합니다)?부모가'onChange'를 전달하고 자신의 상태로 값을 저장해야합니까 ('value' 상태는 부모와 자식 모두에서 중복됩니까?)? 내 목표는 두 시나리오를 처리하는 단일 구성 요소를 작성하는 것입니다. – mbudnik
예, 명시된 바와 같이, 부모가 onChange 핸들러를 컴포넌트에 전달하면, 컴포넌트는 내부 onChange 핸들링의 일부로이를 호출해야합니다. –