プログラミングを始めたばかりの初学者です。
作りたいサービスに必要なReactの技術をCodesandboxにて試しているのですが、詰まってしまいました。
何卒お力添えいただけますと幸いです。
やりたいこと
index.tsxで作成した連想配列を要素として持つ配列"arrays"について、
App.tsxでpropsとして受け取り、valueごとの配列を作りたいです。
例:
const arrays = [
{id: 1, alphabet: "A", japanese: "あ"},
{id: 2, alphabet: "B", japanese: "い"},
{id: 3, alphabet: "C", japanese: "う"}
]
↓
const idArray = [1, 2, 3];
const alphabetArray = ["A", "B", "C"];
const japaneseArray = ["あ", "い", "う"];
やってみたこと
App.tsxにおいて、先に配列"idArray","alphabetArray","japaneseArray"を宣言し、
その後for文で元の配列"props.arrays"のvalueを1個づつ.pushしようと試みました。
しかし、for文の中でエラーが発生してしまい、うまくいきません。
React
1//index.tsx 2 3import { render } from "react-dom"; 4import App from "./App"; 5 6const arrays = [ 7 {id: 1, alphabet: "A", japanese: "あ"}, 8 {id: 2, alphabet: "B", japanese: "い"}, 9 {id: 3, alphabet: "C", japanese: "う"} 10 ] 11 12const rootElement = document.getElementById("root"); 13render(<App arrays={arrays}/>, rootElement);
React
1//App.tsx 2 3import "./styles.css"; 4 5export default function App(props) { 6 const idArray = []; 7 const alphabetArray = []; 8 const japaneseArray = []; 9 10// for文にて、下記エラーが発生。 11// TypeError 12// Cannot read properties of undefined (reading 'id') 13 for (let i = 1; i <= props.arrays.length; i++) { 14 idArray.push(props.arrays[i].id); 15 alphabetArray.push(props.arrays[i].alphabet); 16 japaneseArray.push(props.arrays[i].japanese); 17 } 18 19 return ( 20 <div className="App"> 21 22{/* 表示テスト */} 23 24 <h1>{idArray[1]}</h1> 25 <h1>{idArray[2]}</h1> 26 <h1>{idArray[3]}</h1> 27 28 <h1>{alphabetArray[1]}</h1> 29 <h1>{alphabetArray[2]}</h1> 30 <h1>{alphabetArray[3]}</h1> 31 32 <h1>{japaneseArray[1]}</h1> 33 <h1>{japaneseArray[2]}</h1> 34 <h1>{japaneseArray[3]}</h1> 35 </div> 36 ); 37} 38
このほか、Object.valueを使用した方法も検討してみましたが、知識不足のため先行記事の応用がむずかしく、うまくいきませんでした。
良い方法ございましたら、ご教示いただけますと幸いです。
何卒宜しくお願い致します。
補足
下記がCodesandboxのURLとなります。
https://codesandbox.io/s/epic-edison-osrvl?file=/src/App.tsx:408-421
追記
App.tsxでのconsole.logの結果は下記となります。
console.log(props)
⇒{arrays: Array(3)}
console.log(props.arrays)
⇒(3) [Object, Object, Object]
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/07 03:18
退会済みユーザー
2021/12/07 03:26
2021/12/07 04:26
退会済みユーザー
2021/12/07 08:37
退会済みユーザー
2021/12/07 09:07
2021/12/07 11:02