我想在组件周围显示特定数量的组件。我怎样才能做到这一点? :)
通过这个实现,我绘制了8个Patrat组件
{Array.from(Array(8))。map((item,index)=> (小于…
的 您可以为每个位置传递来自父级的道具,这些位置可以用作子组件中的样式以用于围绕圆圈的位置 强>
您还可以创建可以动态创建位置并将其传递给Patrats的函数
请在下方查看样品: 查看示例
你可以让圆圈负责定位元素,然后让Patrats成为圆形的孩子( Circle > div.circle_element_position > Patrat )或者如果Patrats将根据父组件进行更改,您可以使用相同的逻辑但使用 renderProps 为Patrats( Circle > div.circle_element_position > props.renderPatrat(index) )
Circle > div.circle_element_position > Patrat
Circle > div.circle_element_position > props.renderPatrat(index)
看起来或多或少会像这样:
function Partat() { return <div>1</div> } function calculatePositions(numberOfPatrats) { //your implementation } function Circle ({numberOfPatrats}) { let positions = calculatePositions(numberOfPatrats); return <div className="circle"> {positions.map( (position, index) => <div style={position} key={index}><Partat /></div> )} </div> }
要将Parat放在您想要的位置上,您只需要实现calculatePositions,这与您在jsfiddle示例中的类似。
您可以创建一个递归循环,在其中创建一个新的循环 Patrat 具有递归调用的组件 children 它。
Patrat
children
的 例 强>
function Patrat({ children }) { return ( <div style={{ paddingLeft: 10, backgroundColor: "#" + Math.floor(Math.random() * 16777215).toString(16) }} > {children} </div> ); } function App() { const content = (function patratLoop(num) { if (num === 0) { return <div> Foo </div>; } return <Patrat>{patratLoop(--num)}</Patrat>; })(8); return content; } ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script> <div id="root"></div>