前提・実現したいこと
stateに配列(defaultDataset)、呼び出したい値(現在はinit)を指定してクラスコンポーネントで扱おうとしたのですが、
const initDataset = this.state.dataset[this.state.currentId]
で指定してもデータを取得することができません。
https://youtu.be/EOlvkGIk5RE
こちらの動画を参考に進めていたのですが、動画ではエラーが出ていないのですが自分だけ出てきます。
Reactでのデータの受け取り方はこの書き方で合っているのでしょうか?
少し知恵を貸してもらえると嬉しいです。
発生している問題・エラーメッセージ
TypeError: Cannot read property 'init' of undefined 18 | 19 | initAnswer = () => { > 20 | const initDataset(this.state.dataset[this.state.currentId])] const initAnswers = initDataset.answers; this.setState({answers:initAnswers}) }; | 22 | 23 |
データを呼び出すクラスコンポーネント
React
1import React from 'react'; 2import defaultDataset from './dataset'; 3 4export default class App extends React.Component { 5 constructor(props){ 6 super(props); 7 this.state = { 8 currentId:'init', 9 detaset: defaultDataset 10 } 11 } 12 13 initAnswer = () => { 14 const initDataset = this.state.dataset[this.state.currentId] 15 const initAnswers = initDataset.answers; 16 17 this.setState({answers:initAnswers}) 18 }; 19 20 componentDidMount(){ 21 this.initAnswer() 22 } 23}
呼び出したいデータが入っているdataset.js
const defaultDataset = { "init": { answers: [ {content: "仕事を依頼したい", nextId: "job_offer"}, {content: "エンジニアのキャリアについて相談したい", nextId: "consultant"}, {content: "学習コミュニティについて知りたい", nextId: "community"}, {content: "お付き合いしたい", nextId: "dating"}, ], question: "こんにちは!????トラハックへのご用件はなんでしょうか?", }, "job_offer": { answers: [ {content: "Webサイトを制作してほしい", nextId: "website"}, {content: "Webアプリを開発してほしい", nextId: "webapp"}, {content: "自動化ツールを作ってほしい", nextId: "automation_tool"}, {content: "その他", nextId: "other_jobs"} ], question: "どのようなお仕事でしょうか?", }, } export default defaultDataset;
試したこと
いろいろコードを書き直したりしたのですが
const initDataset = this.state.dataset[this.state.currentId]
やはりここでエラーが出てしまいます。
teratail初心者なので、何か不十分なところがあればコメントしてもらえると助かります。
回答1件
あなたの回答
tips
プレビュー