Javascriptの分割代入
超初心者がReactを勉強する
初めてのReact「入門編」導入から基本まで〜TODOアプリを作ってを学ぼう! | 株式会社ウェブ企画パートナーズ の記事を参考に勉強しています。
記事の中で出てくる以下のような中かっこで括った定数の宣言方法(todos
)を分割代入というらしい。
constructor(props) { super(props); this.state = { todos: [], name: '' }; } ・・・ render() { const { todos } = this.state; return (<div> <input type="text" onInput={this.onInput} /> <button onClick={this.addTodo} >登録</button> <ul> {todos.map((todo, index) => <li key={index}> {todo} <button onClick={() => { this.removeTodo(index) }}>削除</button> </li>)} </ul> </div>); }
この例ではstate
にtodos
とname
が存在することがコンストラクタを見ればわかるが、
分割代入によって、this.state
の要素を前から順番に定数に割り当てているらしい。
this.state
の最初の要素はthis.state.todos
なので、render
メソッド内のtodos
変数には
this.state.todos
が代入されている。
さらに以下の例では...
が使われている。todos
は配列なので、これにも分割代入が使われるわけだが、
...
がつくのは残余パターンと呼ばれ、分割したパターンの残余部分を表す。今回はtodos
配列の
すべてを残余パターンとして表すことで、todos
の末尾にname
を追加している
addTodo = () => { const { todos, name } = this.state; this.setState({ todos: [...todos, name] }); }