为什么将数组作为道具传递时会转换为对象?
Why does an array get converted to an object when passing it as props?
我正在尝试将每个数组项映射到它自己的 div(以创建一个 TicTacToe 棋盘)。但是,当我从 props 传入它时,它被识别为一个对象。这是一个例子:
这是我的 App.js 文件:
class App extends Component {
state = {
gameBoard: Array(9),
}
render() {
console.log(this.state.gameBoard)
console.log(Array.isArray(this.state.gameBoard))
return (
<div className="App">
<Board squares={this.state.gameBoard}/>
</div>
);
}
}
export default App;
这是我的 Board.js 组件文件:
function Board(squares) {
console.log(squares)
console.log(Array.isArray(squares))
return (
null
)
}
export default Board
控制台登录 App.js 按预期工作产生:
//(an array)
" (9) [empty × 9] "
"true"
然而,控制台登录Board.js yield:
//(an object)
"{squares: Array(9)}"
"false"
我很好奇为什么会这样。
另外,如果有办法,我怎样才能让我的组件将道具识别为数组?
子 Board
组件中的 squares
参数是一个 prop 对象。如果你尝试 squares.squares
应该 return 一个 Array
function Board(squares) {
// This is the prop object that react passes to a child component.
console.log(squares);
console.log(squares.squares)
console.log(Array.isArray(squares.squares))
return (
null
)
}
export default Board
Board
组件接收的是 props
对象,在您的情况下,它的属性之一将是 squares
。所以你的 Board
代码应该是:
function Board(props) {
console.log(props.squares)
console.log(Array.isArray(props.squares))
return (
null
)
}
export default Board
我正在尝试将每个数组项映射到它自己的 div(以创建一个 TicTacToe 棋盘)。但是,当我从 props 传入它时,它被识别为一个对象。这是一个例子:
这是我的 App.js 文件:
class App extends Component {
state = {
gameBoard: Array(9),
}
render() {
console.log(this.state.gameBoard)
console.log(Array.isArray(this.state.gameBoard))
return (
<div className="App">
<Board squares={this.state.gameBoard}/>
</div>
);
}
}
export default App;
这是我的 Board.js 组件文件:
function Board(squares) {
console.log(squares)
console.log(Array.isArray(squares))
return (
null
)
}
export default Board
控制台登录 App.js 按预期工作产生:
//(an array)
" (9) [empty × 9] "
"true"
然而,控制台登录Board.js yield:
//(an object)
"{squares: Array(9)}"
"false"
我很好奇为什么会这样。 另外,如果有办法,我怎样才能让我的组件将道具识别为数组?
子 Board
组件中的 squares
参数是一个 prop 对象。如果你尝试 squares.squares
应该 return 一个 Array
function Board(squares) {
// This is the prop object that react passes to a child component.
console.log(squares);
console.log(squares.squares)
console.log(Array.isArray(squares.squares))
return (
null
)
}
export default Board
Board
组件接收的是 props
对象,在您的情况下,它的属性之一将是 squares
。所以你的 Board
代码应该是:
function Board(props) {
console.log(props.squares)
console.log(Array.isArray(props.squares))
return (
null
)
}
export default Board