SetStateをしても、再度レンダーされない
お聞きしたい事
handleSubmitの箇所でsetStateをするも、再度レンダーされません。
Object.assignで、新しいTodosを作成しているのですが、再度レンダーされません。
こちら更新の方法がよくないと思うのですが、どなたかお分かりになる方はいらっしゃいますでしょうか?
import React from 'react'; import logo from './logo.svg'; import './App.css'; import Todos from './components/Todo/Todos' import Form from './components/Todo/Form' type Todo = { id:number body: string } type TodoState = { todos: Todo[] value: string } class App extends React.Component<{}, TodoState> { constructor(props: any) { super(props) this.state = { todos: [{id:1, body: "todo1"},{id:2, body: "todo2"}], value: '' } } handleSubmit(e: React.FormEvent<HTMLFormElement>):void { e.preventDefault() const newTodos = Object.assign([], this.state.todos,[...this.state.todos, {id: this.state.todos.length + 1, bodu: this.state.value}]) this.setState({todos: newTodos}) } handleTodoValue(e: React.ChangeEvent<HTMLInputElement>): void { this.setState({value: e.target.value}) } render () { const {todos} = this.state console.log(this.state) return ( <div className="ui main"> <form onSubmit={this.handleSubmit.bind(this)}> <input type="input" onChange={this.handleTodoValue.bind(this)}/> <input type="submit" value="追加"/> </form> <Todos todos={todos}/> </div> ); } } export default App;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。