今回したかったこと
- 正規表現「/\s+/」を用いて複数の空文字の入力が来た際にonClickAdd関数の処理を終わらせたかった。
- 今回初めてReactを触って、入力値の検知をフロント側でしたため、railsのblank?メソッドのようなものを最初は探したが無かったため、正規表現で空文字と複数の空文字にマッチする際に弾くという形を取ることにしました。
<br>js
1...省略 2export const App = () => { 3 const [todoText, setTodoText] = useState(''); 4 const [incompleteTodos, setIncompleteTodos] = useState([ 5 'ああああ', 6 'いいいい' 7 ]); 8 const [completeTodos, setCompleteTodos] = useState([ 9 'うううう', 10 'ええええ' 11 ]); 12 13 const onChangeTodoText = (event) => setTodoText(event.target.value); 14 const onClickAdd = () => { 15 // 以下がうまくいかなかったため、仕方なく空文字1文字のみに対応 16 // if (todoText === /\s*/) return; 17 if (todoText === '') return; 18 const newTodos = [...incompleteTodos, todoText]; 19 setIncompleteTodos(newTodos); 20 setTodoText(''); 21 }; 22 23...省略*
試したこと
- todoTextの型を確認 => string
- console.logで正規表現がそもそも作動しているのか確認 => 作動していなかった?全てfalseになった
<br>js
1todoText = ""; 2console.log(todoText === /\s*/); 3// => false 4 5todoText = " "; 6console.log(todoText === /\s*/); 7// => false 8 9todoText = ""; 10console.log(todoText === /\s{0,}/); 11// => false 12 13todoText = " "; 14console.log(todoText === /\s{0,}/); 15// => false
実行環境
package.json
1"dependencies": { 2 "@testing-library/jest-dom": "^5.11.4", 3 "@testing-library/react": "^11.1.0", 4 "@testing-library/user-event": "^12.1.10", 5 "react": "^17.0.2", 6 "react-dom": "^17.0.2", 7 "react-scripts": "4.0.3", 8 "web-vitals": "^1.0.1" 9 },
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/06 06:25