중첩 배열에 react-hook-form을 사용하는 방법

제시

반응 후크 양식을 사용하여 중첩 배열을 만들려고합니다. 샘플 코드와 함께 샌드 박스를 첨부했습니다.

코드 스 니펫

<ul>
        {fields.map((item, index) => {
          return (
            <li key={item.id}>
              <label> single input </label>
              <input
                name={`test[${index}].task`}
                ref={register()}
                defaultValue={item.task}
              />
              <br />
              <label> first Name </label>
              <input
                name={`test[${index}].name.first`}
                ref={register()}
                defaultValue={item.name.first}
              />
              <br />
              <label>last Name </label>
              <input
                name={`test[${index}].name.last`}
                ref={register()}
                defaultValue={item.name.last}
              />
              <br />

              <label>First Nested </label>
              <input
                name={`test[${index}].nestedArray[${index}].firstNested`}
                ref={register()}
                // defaultValue={item.nestedArray.nested}
              />

              <br />
              <label> Second Nested </label>
              <input
                name={`test[${index}].nestedArray[${index}].secondNested`}
                ref={register()}
                // defaultValue={item.nestedArray.nested}
              />
              <br />

              <button type="button" onClick={() => remove(index)}>
                Delete
              </button>
            </li>
          );
        })}
      </ul>

발행물

초기 단계는 잘 작동합니다. "nestedArray"에서 데이터를 가져올 수 있습니다. 하지만 두 개 이상의 중첩 배열을 추가하면 데이터가 표시됩니다. 내 "nestedArray"는 항상 "null"로 시작하고 더 추가하면 "null"이 계속 추가됩니다. 이 "null"값을 어떻게 피할 수 있습니까? 이전 입력을 유지하고 싶지 않습니다. null 값을 완전히 피하고 싶습니다.

샘플 출력

{
   "test":[
      {
         "task":"single",
         "name":{
            "first":"Jack",
            "last":"Box"
         },
         "nestedArray":[
            {
               "firstNested":"firstNested",
               "secondNested":"firstSecondNested"
            }
         ]
      },
      {
         "task":"Second",
         "name":{
            "first":"Kate",
            "last":"Smith"
         },
         "nestedArray":[
            **null,**
            {
               "firstNested":"SecondNested",
               "secondNested":"SecondNestedSecond"
            }
         ]
      }
   ]
}

예상되는 샘플 출력

{
   "test":[
      {
         "task":"single",
         "name":{
            "first":"Jack",
            "last":"Box"
         },
         "nestedArray":[
            {
               "firstNested":"firstNested",
               "secondNested":"firstSecondNested"
            }
         ]
      },
      {
         "task":"Second",
         "name":{
            "first":"Kate",
            "last":"Smith"
         },
         "nestedArray":[
            {
               "firstNested":"SecondNested",
               "secondNested":"SecondNestedSecond"
            }
         ]
      }
   ]
}

Sandbox에서 재현하는 단계

  1. 추가를 클릭하십시오
  2. 세부 사항 제공
  3. 콘솔에서 데이터보기
  4. 추가 (다시)를 클릭하여 다른 데이터 세트를 추가하십시오.
  5. 콘솔은 nestedArray 내부에 "null"을 표시합니다.

참고 문헌

코드 샌드 박스

코드 스 니펫

<ul>
        {fields.map((item, index) => {
          return (
            <li key={item.id}>
              <label> single input </label>
              <input
                name={`test[${index}].task`}
                ref={register()}
                defaultValue={item.task}
              />
              <br />
              <label> first Name </label>
              <input
                name={`test[${index}].name.first`}
                ref={register()}
                defaultValue={item.name.first}
              />
              <br />
              <label>last Name </label>
              <input
                name={`test[${index}].name.last`}
                ref={register()}
                defaultValue={item.name.last}
              />
              <br />

              <label>First Nested </label>
              <input
                name={`test[${index}].nestedArray[${index}].firstNested`}
                ref={register()}
                // defaultValue={item.nestedArray.nested}
              />

              <br />
              <label> Second Nested </label>
              <input
                name={`test[${index}].nestedArray[${index}].secondNested`}
                ref={register()}
                // defaultValue={item.nestedArray.nested}
              />
              <br />

              <button type="button" onClick={() => remove(index)}>
                Delete
              </button>
            </li>
          );
        })}
      </ul>
user67

이것에 대해 어떻게 작동합니까, 배열 대괄호를 유지하고 null이 없습니다.

아마도 맵 인덱스가 증가했기 때문에 nestedArray는 현재 맵 인덱스에있는 값을 필터링하지만 다음 인덱스로 이동하지 않았기 때문에 해당 반복에 대해 null을 생성합니다.

코드 : https://codesandbox.io/s/react-hook-form-usefieldarray-nested-arrays-forked-9sxrt?file=/src/fieldArray.js:302-1778

      <ul>
        {fields.map((item, index) => {
          return (
            <li key={item.id}>
              <label> single input </label>
              <input
                name={`test[${index}].task`}
                ref={register()}
                defaultValue={item.task}
              />
              <br />
              <label> first Name </label>
              <input
                name={`test[${index}].name.first`}
                ref={register()}
                defaultValue={item.name.first}
              />
              <br />
              <label>last Name </label>
              <input
                name={`test[${index}].name.last`}
                ref={register()}
                defaultValue={item.name.last}
              />
              <br />

              <label>First Nested </label>
              <input
                name={`test[${index}].nestedArray[0].firstNested`} //changed index to 0
                ref={register()}
                // defaultValue={item.nestedArray.nested}
              />

              <br />
              <label> Second Nested </label>
              <input
                name={`test[${index}].nestedArray[0].secondNested`} //changed index to 0
                ref={register()}
                // defaultValue={item.nestedArray.nested}
              />
              <br />

              <button type="button" onClick={() => remove(index)}>
                Delete
              </button>
            </li>
          );
        })}
      </ul>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

react-hook-form을 사용하여 React에 라디오 그룹의 상태를 저장하는 방법

분류에서Dev

AESON을 사용하여 중첩 된 JSON에서 배열을 읽는 방법

분류에서Dev

AESON을 사용하여 중첩 된 JSON에서 배열을 읽는 방법

분류에서Dev

개미 디자인 또는 머티리얼 UI에서 react-hook-form을 사용하는 방법

분류에서Dev

Ionic Modal 내에서 react-hook-form을 사용하는 방법은 무엇입니까?

분류에서Dev

소품 및 머티리얼 UI에서 react-hook-form을 사용하는 방법

분류에서Dev

Component 클래스 내에서 react-hook-form을 사용하는 방법은 무엇입니까?

분류에서Dev

반응에서 중첩 배열을 렌더링하는 방법

분류에서Dev

JavaScript의 중첩 배열에 항목을 추가하는 방법

분류에서Dev

배열에서 암시 적 중첩을 변환하는 방법

분류에서Dev

템플릿에 중첩 배열을 표시하는 방법

분류에서Dev

각 js에서 중첩 배열을 인쇄하는 방법

분류에서Dev

중첩 배열에서 값을 반환하는 방법-Swift 3

분류에서Dev

PHP에서 중첩 배열을 처리하는 방법 (Laravel)

분류에서Dev

JavaScript : 문자열에서 중첩 배열을 만드는 방법

분류에서Dev

React Native Expo에서 중첩 탐색을 수행하는 방법

분류에서Dev

Map을 사용하여 중첩 된 객체 배열 내부에 키가 있는지 확인하는 방법

분류에서Dev

객체 배열 내부에 중첩 된 배열을 설정하는 방법

분류에서Dev

Mongoose 중첩 배열에 $ elemMatch를 사용하는 방법

분류에서Dev

Newtonsoft.Json을 사용하여 C #에서 중첩 배열로 json을 역 직렬화하는 방법

분류에서Dev

ReQL을 사용하여 RethinkDB에서 중첩 배열을 업데이트하는 방법

분류에서Dev

JSONObject (org.json)를 사용하여 중첩 배열을 가져 오는 방법

분류에서Dev

중첩 배열의 Coingecko API에서 JavaScript를 사용하여 가격을 추출하는 방법

분류에서Dev

각도 7에서 ngFor를 사용하여 동적으로 중첩 된 배열을 반복하는 방법

분류에서Dev

Ruby에서 중첩 while 루프를 사용하여 배열을 반복하는 방법은 무엇입니까?

분류에서Dev

mongoDB에서 findOne을 사용 하여이 쿼리 양식 중첩 배열을 얻는 방법

분류에서Dev

React Hooks에서 사용자 정의 된 Hook을 사용하여 요청을 보내는 방법

분류에서Dev

노드 js에서 중첩 맵을 사용하는 방법

분류에서Dev

중첩 된 JSON 값에 SwiftyJSON을 사용하는 방법

Related 관련 기사

  1. 1

    react-hook-form을 사용하여 React에 라디오 그룹의 상태를 저장하는 방법

  2. 2

    AESON을 사용하여 중첩 된 JSON에서 배열을 읽는 방법

  3. 3

    AESON을 사용하여 중첩 된 JSON에서 배열을 읽는 방법

  4. 4

    개미 디자인 또는 머티리얼 UI에서 react-hook-form을 사용하는 방법

  5. 5

    Ionic Modal 내에서 react-hook-form을 사용하는 방법은 무엇입니까?

  6. 6

    소품 및 머티리얼 UI에서 react-hook-form을 사용하는 방법

  7. 7

    Component 클래스 내에서 react-hook-form을 사용하는 방법은 무엇입니까?

  8. 8

    반응에서 중첩 배열을 렌더링하는 방법

  9. 9

    JavaScript의 중첩 배열에 항목을 추가하는 방법

  10. 10

    배열에서 암시 적 중첩을 변환하는 방법

  11. 11

    템플릿에 중첩 배열을 표시하는 방법

  12. 12

    각 js에서 중첩 배열을 인쇄하는 방법

  13. 13

    중첩 배열에서 값을 반환하는 방법-Swift 3

  14. 14

    PHP에서 중첩 배열을 처리하는 방법 (Laravel)

  15. 15

    JavaScript : 문자열에서 중첩 배열을 만드는 방법

  16. 16

    React Native Expo에서 중첩 탐색을 수행하는 방법

  17. 17

    Map을 사용하여 중첩 된 객체 배열 내부에 키가 있는지 확인하는 방법

  18. 18

    객체 배열 내부에 중첩 된 배열을 설정하는 방법

  19. 19

    Mongoose 중첩 배열에 $ elemMatch를 사용하는 방법

  20. 20

    Newtonsoft.Json을 사용하여 C #에서 중첩 배열로 json을 역 직렬화하는 방법

  21. 21

    ReQL을 사용하여 RethinkDB에서 중첩 배열을 업데이트하는 방법

  22. 22

    JSONObject (org.json)를 사용하여 중첩 배열을 가져 오는 방법

  23. 23

    중첩 배열의 Coingecko API에서 JavaScript를 사용하여 가격을 추출하는 방법

  24. 24

    각도 7에서 ngFor를 사용하여 동적으로 중첩 된 배열을 반복하는 방법

  25. 25

    Ruby에서 중첩 while 루프를 사용하여 배열을 반복하는 방법은 무엇입니까?

  26. 26

    mongoDB에서 findOne을 사용 하여이 쿼리 양식 중첩 배열을 얻는 방법

  27. 27

    React Hooks에서 사용자 정의 된 Hook을 사용하여 요청을 보내는 방법

  28. 28

    노드 js에서 중첩 맵을 사용하는 방법

  29. 29

    중첩 된 JSON 값에 SwiftyJSON을 사용하는 방법

뜨겁다태그

보관