#Todoリストを作成しています。
Reactで完了したタスクをチェックするチェックボックスを実装したいです。
チェックボックスのtrueとfalseの状態の更新はstateで出来る様になったのですが、ページを更新したり、ページ遷移したりするとチェックした筈の項目がチェックされていない状態に戻ってしまいます。
stateの初期状態が表示されてしまっているのは理解しているのですが、どうしたら更新されたstateの状態を保持したまま画面遷移したりページを更新したり出来るのでしょうか。
ご教示頂けますと幸いです。
宜しくお願い致します。
該当のソースコード
react
1import React from "react"; 2import axios from "axios"; 3 4class Todo extends React.Component { 5 constructor(props) { 6 super(props); 7 8 this.state = { 9 posts: [], 10 check1: false, 11 check2: false, 12 check3: false, 13 }; 14 } 15 16 componentDidMount() { 17 axios.get("http://hoge").then((res) => { 18 this.setState({ posts: res.data }); 19 }); 20 } 21 22 handleChange = (e) => { 23 let name = e.target.name 24 if (name === e.target.name) { 25 this.setState({[e.target.name]: !this.state.[e.target.name]}) 26 }} 27 28 render() { 29 return ( 30 <div> 31 {this.state.posts.map((post, index) => { 32 return ( 33 <div key={index}> 34 <label onLoad={() => this.componentDidMount()}> 35 {post.created_at} 36 </label><br/> 37 <label onLoad={() => this.componentDidMount()}> 38 <input type='checkbox' name='check1' checked={this.state.check1} onChange={this.handleChange} /> 39 {post.list_one} 40 </label><br /> 41 <label onLoad={() => this.componentDidMount()}> 42 <input type='checkbox' name='check2' checked={this.state.check2} onChange={this.handleChange} /> 43 {post.list_two} 44 </label><br /> 45 <label onLoad={() => this.componentDidMount()}> 46 <input type='checkbox' name='check3' checked={this.state.check3} onChange={this.handleChange}/> 47 {post.list_three} 48 </label> 49 </div> 50 ); 51 })} 52 </div> 53 ); 54 } 55} 56 57export default Todo; 58
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/13 13:44
2020/12/13 13:51