前提・実現したいこと
Javascript, React初心者です。
現在、ReactのTutorialをStateless functional componentsへ書き換える練習をしていますが、下記エラーが発生しています。
発生している問題・エラーメッセージ
javascript
1src/index.js:88 2 3 85 | const [squares, setSquares] = useState(Array(9).fill(null)) 4 86 | 5 87 | const handleClick = (i) => { 6> 88 | const squares = this.squares.slice() 7 | ^ 89 | squares[i] = 'X' 8 90 | setSquares({squares:squares}) 9 91 | } 10 11TypeError: Cannot read property 'squares' of undefined
該当のソースコード
1.Tutorialのコード(正常動作)
javascript
1class Board extends React.Component { 2 constructor(props) { 3 super(props); 4 this.state = { 5 squares: Array(9).fill(null), 6 }; 7 } 8 9 handleClick(i) { 10 const squares = this.state.squares.slice(); 11 squares[i] = 'X'; 12 this.setState({squares: squares}); 13 } 14...
2.TutorialのコードをStateless functional componentsに変えた箇所(エラー発生)
javascript
1const Board = () => { 2 const [squares, setSquares] = useState(Array(9).fill(null)) 3 4 const handleClick = (i) => { 5 const squares = this.squares.slice() 6 squares[i] = 'X' 7 setSquares({squares:squares}) 8 } 9...
試したこと
- 当該の記載をTutorialのコードに置換して実行したところ、エラーなく想定通りの動作をすることを確認。
- thisのスコープや取り扱う変数が誤っているのかと試行錯誤。エラー発生行(88行目)を
const squares = squares.slice()に変更したところ、同じ88行目で下記エラーが発生
Cannot access 'squares' before initialization
補足情報(FW/ツールのバージョンなど)
Tutorial通りに、create-react-appを用いて環境を作成。
yarn(v1.22.4)を使用し、yarn startにて実行しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/28 08:36
2020/06/28 08:38 編集
2020/06/28 11:53