React:render()和多个子节点

时间:2016-11-22 23:00:32

标签: javascript reactjs

我有一个不受我控制的地图组件,它会渲染所有直接的孩子:

<map>
  <point />
  <circle />
  <circle />
</map>

现在我正在尝试编写一个返回多个对象的组件:

<myComponent>
  <circle />
  <circle />
</myComponent>

然后将其放入我的地图中:

<map>
  <point />
  <circle />
  <circle />
  <myComponent>
    <circle />
    <circle />
  </myComponent>
</map>

但由于地图只呈现直接孩子,我不知道如何让它发挥作用。帮助

3 个答案:

答案 0 :(得分:2)

只需使用特殊children prop

即可
function myComponent(props) {
  return (
    <map>
      {props.children}
    </map>
  );
}

然后像往常一样在另一个组件中使用它:

...
render() {
  return (
    <myComponent>
      <circle />
      <circle />
    </myComponent>
  );
}
...

答案 1 :(得分:0)

如果我没错,我猜这就是你要找的。

function MyComponent (props) {
  const objs = props.objs;
  const listItems = objs.map((obj) =>
    < {obj} />
  );
  return (
    <map>{listItems} </map>
  );
}

const objs = ['circle', 'circle'];
ReactDOM.render(
  <MyComponent objs={objs} />, //pass children i.e.,objs as props to the MyComponent
  document.getElementById('root')
);

答案 2 :(得分:0)

反应16个引入的片段 所以你可以做

...
render() {
  return (
  <React.Fragment>
    <circle />
    <circle />
  </React.Fragment>
  );
}
...