Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 Diffchecker를 사용하는 방법. 데스크톱 앱을 사용하면 비교 데이터가 외부로 전송되지 않습니다!
데스크톱 앱 받기
useFieldArray sandbox diff
생성일
4년 전
비교 결과 만료 없음
초기화
내보내기
공유
설명
2 삭제
행
총
삭제
글자
총
삭제
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
144 행
복사
1 추가
행
총
추가
글자
총
추가
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
144 행
복사
import React from "react";
import React from "react";
복사
복사됨
복사
복사됨
import { useForm, useFieldArray, Controller
, useWatch
} from "react-hook-form";
import { useForm, useFieldArray, Controller
} from "react-hook-form";
import ReactDOM from "react-dom";
import ReactDOM from "react-dom";
import "./styles.css";
import "./styles.css";
let renderCount = 0;
let renderCount = 0;
function App() {
function App() {
복사
복사됨
복사
복사됨
const { register, control, handleSubmit, reset
, watch
} = useForm({
const { register, control, handleSubmit, reset
} = useForm({
defaultValues: {
defaultValues: {
test: [{ firstName: "Bill", lastName: "Luo" }]
test: [{ firstName: "Bill", lastName: "Luo" }]
}
}
});
});
const {
const {
fields,
fields,
append,
append,
prepend,
prepend,
remove,
remove,
swap,
swap,
move,
move,
insert,
insert,
replace
replace
} = useFieldArray({
} = useFieldArray({
control,
control,
name: "test"
name: "test"
});
});
const onSubmit = (data) => console.log("data", data);
const onSubmit = (data) => console.log("data", data);
// if you want to control your fields with watch
// if you want to control your fields with watch
// const watchResult = watch("test");
// const watchResult = watch("test");
// console.log(watchResult);
// console.log(watchResult);
// The following is useWatch example
// The following is useWatch example
// console.log(useWatch({ name: "test", control }));
// console.log(useWatch({ name: "test", control }));
renderCount++;
renderCount++;
return (
return (
<form onSubmit={handleSubmit(onSubmit)}>
<form onSubmit={handleSubmit(onSubmit)}>
<h1>Field Array </h1>
<h1>Field Array </h1>
<p>The following demo allow you to delete, append, prepend items</p>
<p>The following demo allow you to delete, append, prepend items</p>
<span className="counter">Render Count: {renderCount}</span>
<span className="counter">Render Count: {renderCount}</span>
<ul>
<ul>
{fields.map((item, index) => {
{fields.map((item, index) => {
return (
return (
복사
복사됨
복사
복사됨
<li key={item
.id}>
<li key={item
?
.id}>
<input {...register(`test.${index}.firstName`)} />
<input {...register(`test.${index}.firstName`)} />
<Controller
<Controller
render={({ field }) => <input {...field} />}
render={({ field }) => <input {...field} />}
name={`test.${index}.lastName`}
name={`test.${index}.lastName`}
control={control}
control={control}
/>
/>
<button type="button" onClick={() => remove(index)}>
<button type="button" onClick={() => remove(index)}>
Delete
Delete
</button>
</button>
</li>
</li>
);
);
})}
})}
</ul>
</ul>
<section>
<section>
<button
<button
type="button"
type="button"
onClick={() => {
onClick={() => {
append({ firstName: "appendBill", lastName: "appendLuo" });
append({ firstName: "appendBill", lastName: "appendLuo" });
}}
}}
>
>
append
append
</button>
</button>
<button
<button
type="button"
type="button"
onClick={() =>
onClick={() =>
prepend({
prepend({
firstName: "prependFirstName",
firstName: "prependFirstName",
lastName: "prependLastName"
lastName: "prependLastName"
})
})
}
}
>
>
prepend
prepend
</button>
</button>
<button
<button
type="button"
type="button"
onClick={() =>
onClick={() =>
insert(parseInt(2, 10), {
insert(parseInt(2, 10), {
firstName: "insertFirstName",
firstName: "insertFirstName",
lastName: "insertLastName"
lastName: "insertLastName"
})
})
}
}
>
>
insert at
insert at
</button>
</button>
<button type="button" onClick={() => swap(1, 2)}>
<button type="button" onClick={() => swap(1, 2)}>
swap
swap
</button>
</button>
<button type="button" onClick={() => move(1, 2)}>
<button type="button" onClick={() => move(1, 2)}>
move
move
</button>
</button>
<button
<button
type="button"
type="button"
onClick={() =>
onClick={() =>
replace([
replace([
{
{
firstName: "test1",
firstName: "test1",
lastName: "test1"
lastName: "test1"
},
},
{
{
firstName: "test2",
firstName: "test2",
lastName: "test2"
lastName: "test2"
}
}
])
])
}
}
>
>
replace
replace
</button>
</button>
<button type="button" onClick={() => remove(1)}>
<button type="button" onClick={() => remove(1)}>
remove at
remove at
</button>
</button>
<button
<button
type="button"
type="button"
onClick={() =>
onClick={() =>
reset({
reset({
test: [{ firstName: "Bill", lastName: "Luo" }]
test: [{ firstName: "Bill", lastName: "Luo" }]
})
})
}
}
>
>
reset
reset
</button>
</button>
</section>
</section>
<input type="submit" />
<input type="submit" />
</form>
</form>
);
);
}
}
const rootElement = document.getElementById("root");
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
ReactDOM.render(<App />, rootElement);
저장된 비교 결과
원본
파일 열기
import React from "react"; import { useForm, useFieldArray, Controller, useWatch } from "react-hook-form"; import ReactDOM from "react-dom"; import "./styles.css"; let renderCount = 0; function App() { const { register, control, handleSubmit, reset, watch } = useForm({ defaultValues: { test: [{ firstName: "Bill", lastName: "Luo" }] } }); const { fields, append, prepend, remove, swap, move, insert, replace } = useFieldArray({ control, name: "test" }); const onSubmit = (data) => console.log("data", data); // if you want to control your fields with watch // const watchResult = watch("test"); // console.log(watchResult); // The following is useWatch example // console.log(useWatch({ name: "test", control })); renderCount++; return ( <form onSubmit={handleSubmit(onSubmit)}> <h1>Field Array </h1> <p>The following demo allow you to delete, append, prepend items</p> <span className="counter">Render Count: {renderCount}</span> <ul> {fields.map((item, index) => { return ( <li key={item.id}> <input {...register(`test.${index}.firstName`)} /> <Controller render={({ field }) => <input {...field} />} name={`test.${index}.lastName`} control={control} /> <button type="button" onClick={() => remove(index)}> Delete </button> </li> ); })} </ul> <section> <button type="button" onClick={() => { append({ firstName: "appendBill", lastName: "appendLuo" }); }} > append </button> <button type="button" onClick={() => prepend({ firstName: "prependFirstName", lastName: "prependLastName" }) } > prepend </button> <button type="button" onClick={() => insert(parseInt(2, 10), { firstName: "insertFirstName", lastName: "insertLastName" }) } > insert at </button> <button type="button" onClick={() => swap(1, 2)}> swap </button> <button type="button" onClick={() => move(1, 2)}> move </button> <button type="button" onClick={() => replace([ { firstName: "test1", lastName: "test1" }, { firstName: "test2", lastName: "test2" } ]) } > replace </button> <button type="button" onClick={() => remove(1)}> remove at </button> <button type="button" onClick={() => reset({ test: [{ firstName: "Bill", lastName: "Luo" }] }) } > reset </button> </section> <input type="submit" /> </form> ); } const rootElement = document.getElementById("root"); ReactDOM.render(<App />, rootElement);
수정본
파일 열기
import React from "react"; import { useForm, useFieldArray, Controller } from "react-hook-form"; import ReactDOM from "react-dom"; import "./styles.css"; let renderCount = 0; function App() { const { register, control, handleSubmit, reset } = useForm({ defaultValues: { test: [{ firstName: "Bill", lastName: "Luo" }] } }); const { fields, append, prepend, remove, swap, move, insert, replace } = useFieldArray({ control, name: "test" }); const onSubmit = (data) => console.log("data", data); // if you want to control your fields with watch // const watchResult = watch("test"); // console.log(watchResult); // The following is useWatch example // console.log(useWatch({ name: "test", control })); renderCount++; return ( <form onSubmit={handleSubmit(onSubmit)}> <h1>Field Array </h1> <p>The following demo allow you to delete, append, prepend items</p> <span className="counter">Render Count: {renderCount}</span> <ul> {fields.map((item, index) => { return ( <li key={item?.id}> <input {...register(`test.${index}.firstName`)} /> <Controller render={({ field }) => <input {...field} />} name={`test.${index}.lastName`} control={control} /> <button type="button" onClick={() => remove(index)}> Delete </button> </li> ); })} </ul> <section> <button type="button" onClick={() => { append({ firstName: "appendBill", lastName: "appendLuo" }); }} > append </button> <button type="button" onClick={() => prepend({ firstName: "prependFirstName", lastName: "prependLastName" }) } > prepend </button> <button type="button" onClick={() => insert(parseInt(2, 10), { firstName: "insertFirstName", lastName: "insertLastName" }) } > insert at </button> <button type="button" onClick={() => swap(1, 2)}> swap </button> <button type="button" onClick={() => move(1, 2)}> move </button> <button type="button" onClick={() => replace([ { firstName: "test1", lastName: "test1" }, { firstName: "test2", lastName: "test2" } ]) } > replace </button> <button type="button" onClick={() => remove(1)}> remove at </button> <button type="button" onClick={() => reset({ test: [{ firstName: "Bill", lastName: "Luo" }] }) } > reset </button> </section> <input type="submit" /> </form> ); } const rootElement = document.getElementById("root"); ReactDOM.render(<App />, rootElement);
비교하기