Reactでresetボタンを押すか、送信するときにinput要素内をリセットしたい
Form要素の部分にbuttonを新たに作成しresetボタンを押すとinputの中身がリセットされるようにする。または、inputの内容が送信されると同時に入力した文字がリセットされるようにしたいです。
Form.jsのhandleSubmit関数内でif文の後に、resetする関数を追加してonClickに指定するなどしてみましたが、handleSubmitが働いてリストを追加する処理になってしまいます。
お時間のある方、アドバイスを頂きたいです。
Appjs
1import React, { useState } from 'react'; 2import Form from './Form'; 3import List from './List'; 4import { Title } from './styles'; 5 6import shortid from 'shortid'; 7import { clear } from 'sisteransi'; 8 9const App = () => { 10 11 const [todos, setTodos] = useState([ 12 { 13 id: shortid.generate(), 14 content: '洗濯をする' 15 }, 16 { 17 id: shortid.generate(), 18 content: '課題をする' 19 }, 20 { 21 id: shortid.generate(), 22 content: '御飯を作る' 23 } 24 ]); 25 26 const addTodo = (content) => { 27 const newTodos = [ 28 ...todos, //配列に中を展開する 29 { 30 id: shortid.generate(), 31 content 32 } 33 ] 34 setTodos(newTodos) 35 }; 36 37 //削除 38 const deleteTodo = (id) => { 39 setTodos(todos.filter(todo => todo.id !== id)) 40 }; 41 42 return ( 43 <> 44 <Title>Todo App</Title> 45 <Form 46 todos={todos} 47 setTodos={setTodos} 48 addTodo={addTodo} 49 50 ></Form> 51 <List todos={todos} deleteTodo={deleteTodo}></List> 52 </> 53 ); 54}; 55 56 57 58export default App; 59
Formjs
1import React, { useState } from 'react'; 2import { MyForm } from './styles'; 3import { Input } from './styles'; 4import { clear } from 'sisteransi'; 5 6 7const Form = ({ todos, setTodos, addTodo }) => { 8 const [value, setValue] = useState(''); 9 console.log(value) 10 const handleSubmit = (e) => { 11 e.preventDefault() 12 if (value) { 13 addTodo(value); 14 } else { 15 alert('文字を入力して下さい'); 16 }; 17 18 }; 19 20 21 return ( 22 <MyForm onSubmit={handleSubmit}> 23 <Input 24 type="text" 25 onChange={e => setValue(e.target.value)} 26 /> 27 <button 28 onClick={} 29 >Clear</button> 30 </MyForm> 31 ); 32}; 33 34export default Form;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/25 14:24
2020/05/25 14:39
2020/05/26 11:49
2020/05/26 11:55