我正在做关于Tic Tac Toe游戏的React教程。我决定创建辅助类Squares,以存储2D游戏领域状态。
class Squares {
constructor(size) {
this._size = size
this._squares = Array(size * size).fill(null)
}
square(row, col, value) {
let position = (row - 1) * this._size + col - 1
if (value !== undefined)
this._squares[position] = value
return this._squares[position]
}
get size() {
return this._size
}
get copy() {
let squares = new Squares(this._size)
squares._squares = this._squares.slice()
return squares
}
}
并在组件状态中使用它,就像这样。
class Game extends React.Component {
constructor() {
super()
this.state = {
history: [{
squares: new Squares(3)
}],
stepNumber: 0,
xIsNext: true,
}
}
但后来我收到了错误。 “TypeError:Squares不是构造函数”
内部组件Squares未定义!但是当我把我的班级变成功能时。
function Squares(size) {
class Squares {
...
}
return new Squares(size)
}
..组件类现在可以看到我的课! 但为什么?阶级和功能有什么区别?
答案 0 :(得分:0)
应该在使用类之前定义类,这是类和函数之间的差异之一。
虽然我测试了你的课程,但当Squares低于游戏时它也有效。这可能是由于我的设置中发生了一些转换。