可变数量 children
Variable number of children
背景:我正在阅读官方 React 教程 (https://reactjs.org/tutorial/tutorial.html),但使用的是 ReasonML(ReasonReact v. 0.9.1)。这是一个 tic-tac-toe 游戏。经典游戏是在 3x3 棋盘上玩的,我已经开始工作了,但现在我正试图将它扩展到任意方形棋盘尺寸。 hard-coded 3x3 板的代码如下所示:
let renderSquare = (...) =>
<Square ... />;
[@react.component]
let make = (~onClick, ~squares, ~winner) => {
...
let render = i =>
renderSquare(...);
<div>
<div className="board-row"> {render(0)} {render(1)} {render(2)} </div>
<div className="board-row"> {render(3)} {render(4)} {render(5)} </div>
<div className="board-row"> {render(6)} {render(7)} {render(8)} </div>
</div>;
Square
是我的另一个组成部分。我想要实现的是在板的每一行中添加任意数量的 Square
s,并具有任意数量的行。
到目前为止我想出的方法没有用,因为我不知道如何将数组或 React.element
的列表作为 children 传递给 <div />
。显示此问题的最小可能代码如下所示:
let renderRow(squares) = <div>(squares |> Array.map(render))</div>;
这里的 squares
是类型 array(int)
。该函数编译不通过,出现如下错误(错误指向上面div
里面的代码):
This has type:
array(React.element)
But somewhere wanted:
React.element
我的问题是,将任意数量的 children 分配给 <div/>
或任何其他 JSX 组件的正确方法是什么(不确定我的术语在这里是否正确)。看起来数组不是要走的路。有可能吗?如果不可能,那么 ReasonReact(或者,也许只是 React)中解决这个问题的惯用方法是什么?
有一个函数 React.array
,您需要使用它来将元素数组转换为单个元素:
let renderRow(squares) = <div>(squares |> Array.map(render) |> React.array)</div>;
背景:我正在阅读官方 React 教程 (https://reactjs.org/tutorial/tutorial.html),但使用的是 ReasonML(ReasonReact v. 0.9.1)。这是一个 tic-tac-toe 游戏。经典游戏是在 3x3 棋盘上玩的,我已经开始工作了,但现在我正试图将它扩展到任意方形棋盘尺寸。 hard-coded 3x3 板的代码如下所示:
let renderSquare = (...) =>
<Square ... />;
[@react.component]
let make = (~onClick, ~squares, ~winner) => {
...
let render = i =>
renderSquare(...);
<div>
<div className="board-row"> {render(0)} {render(1)} {render(2)} </div>
<div className="board-row"> {render(3)} {render(4)} {render(5)} </div>
<div className="board-row"> {render(6)} {render(7)} {render(8)} </div>
</div>;
Square
是我的另一个组成部分。我想要实现的是在板的每一行中添加任意数量的 Square
s,并具有任意数量的行。
到目前为止我想出的方法没有用,因为我不知道如何将数组或 React.element
的列表作为 children 传递给 <div />
。显示此问题的最小可能代码如下所示:
let renderRow(squares) = <div>(squares |> Array.map(render))</div>;
这里的 squares
是类型 array(int)
。该函数编译不通过,出现如下错误(错误指向上面div
里面的代码):
This has type:
array(React.element)
But somewhere wanted:
React.element
我的问题是,将任意数量的 children 分配给 <div/>
或任何其他 JSX 组件的正确方法是什么(不确定我的术语在这里是否正确)。看起来数组不是要走的路。有可能吗?如果不可能,那么 ReasonReact(或者,也许只是 React)中解决这个问题的惯用方法是什么?
有一个函数 React.array
,您需要使用它来将元素数组转换为单个元素:
let renderRow(squares) = <div>(squares |> Array.map(render) |> React.array)</div>;