ReactJs - 显示组件周围的组件

问题描述 投票:2回答:3

我想在组件周围显示特定数量的组件。我怎样才能做到这一点? :)

通过这个实现,我绘制了8个Patrat组件

{Array.from(Array(8)).map((item, index) =>
    (<Patrat key={index}/>)
)}

我想在圆圈周围显示这8个Patrat,这也是一个组件。

html css reactjs html5
3个回答
1
投票

了解问题后,您需要的是最终解决方案

您还可以创建可以动态创建位置并将其传递给子组件的函数

Here is complete code resource link (Click Here)

您也可以在上面给出的代码链接中尝试一些注释行


0
投票

您可以创建一个递归循环,在其中创建一个新的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>

0
投票

你可以让圆圈负责定位元素,然后让Patrats成为圆的子项(Circle > div.circle_element_position > Patrat)或者如果Patrats会根据父组件改变,你可以使用相同的逻辑但是使用renderProps作为Patrats(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>
}

要将零件放置在您想要的位置上,您只需要实现计算位置,这与您在jsfiddle示例中的位置类似。

© www.soinside.com 2019 - 2024. All rights reserved.