前提・実現したいこと
React.jsを使用して、タスク情報(DBテーブルの値)を表示するWebアプリを作っています。
サーバーサイドでAPIを作成済みで、Axiosを使用してデータを取得し、クライアント側でDBのレコードを一覧で表示したいのですが、
うまくいきません。
具体的には、render()内で以下のエラーがでています。
エラー内容:TypeError: Cannot read property 'map' of undefined
taskListに値が入っていないからだと思い、コンソール出力に確認した結果、
constructor内のAxios.Getによるデータの取得はうまくいってるように見えるのですが、
Axios.Getの後のConsoleを確認するとundefinedになっているという状態です。
この対処法がわからず悩んでおります。
JavascriptやReactに触れるのが初めてで理解が浅いところ恐縮なのですが、対処法を教えていただけないでしょうか。
よろしくお願いいたします。
javascript
1import './App.css'; 2import React from 'react' 3import Axios from 'axios' 4import ReactDOM from 'react-dom'; 5 6 7class TaskViewPage extends React.Component { 8 taskList; 9 10 constructor(props) { 11 super(props) 12 var getTaskUrl = 'APIのURL' 13 Axios.get(getTaskUrl, { 14 } 15 ).then((response) => { 16 this.taskList = response.data; 17 //ここはテーブルから取得した値が表示される 18 console.log(response.data); 19 //ここはテーブルから取得した値が表示される 20 console.log(this.taskList); 21 }) 22 //ここがundefinedになる 23 console.log(this.taskList); 24 25 } 26 27 render() { 28 return <div> 29 <div> 30 {this.taskList.map((val) => ( 31 <div> 32 <label> 33 <input 34 type="checkbox" 35 className="checkbox-input" 36 defaultChecked={val.done} 37 /> 38 <span className="checkbox-label">{val.task_name}</span> 39 </label> 40 ))} 41 </div> 42 43 } 44} 45export default TaskViewPage;
React 初めてとのことですが、まず state の扱いについて学ぶ必要があるかと思います。何か参考書とかお持ちでしょうか?