以下のような画面で "+" ボタンを押すと行が追加され
"-" ボタンを押すとその行が削除されるようなFormを作成中です。
見よう見まねで以下のサイトを参考に作成していたのですが
https://codesandbox.io/s/6j1760jkjk
"-"を押しても1行下から削除されるだけで
"-"を押した行が削除できません。。。
また、何度か追加・削除を繰り返していると
1個の"-"ボタンで複数削除されてしまいます。
例えば、test16 まで追加、test2,3 を削除して再度test710などを追加して
test7を消すとtest8以降が消える、など
どのあたりに上記事象がありそうか
ご指摘いただければ幸いです。。。
よろしくお願いいたします。
- ArraySample.js
React
1import React, {useState} from 'react'; 2import { useForm } from "react-hook-form"; 3 4function ArraySample() { 5 const {register, handleSubmit} = useForm(); 6 7 const [indexes, setIndexes] = React.useState([]); 8 const [counter, setCounter] = React.useState(0); 9 10 const addAddress = () => { 11 setIndexes(prevIndexes => [...prevIndexes, counter]); 12 setCounter(prevCounter => prevCounter + 1); 13 console.log(counter); 14 }; 15 16 const removeAddress = index => () => { 17 setIndexes(prevIndexes => [...prevIndexes.filter(item => item !== index)]); 18 setCounter(prevCounter => prevCounter - 1); 19 console.log(counter, indexes) 20 }; 21 22 return ( 23 <form onSubmit={handleSubmit()}> 24 25 <h3>Address</h3> 26 27 <button type="button" onClick={addAddress}> 28 + 29 </button> 30 {indexes.map(index => { 31 return ( 32 <div> 33 <label>Address</label> 34 <input 35 type="text" 36 name={`address.${index}`} 37 ref={register} 38 /> 39 <button type="button" onClick={removeAddress(index)}> 40 - 41 </button> 42 </div> 43 ) 44 })} 45 </form> 46 ) 47} 48 49export default ArraySample;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/29 07:58