React 如何动态渲染子组件?

export default class Panel extends React.Component{

    constructor(props) {
        super(props)
        this.state = {
            infoList : []
        }
    }

    componentDidMount() {
        //fetch 获取info 详细信息
        //setState 将详细信息放入infoList
    }

    render() {
        return (
          <div>
            //根据infoList的长度动态渲染子组件,并且将infoList[i]的信息传入子组件显示
            <PanelInfo />
          </div>
        );
    }
}

如上述代码通过fetch获取详情的列表,并且通过列表长度和列表里对象的各个属性值渲染子组件,如何实现?

//例如伪代码
infoList : [
    {"title":"panel_1","context":"this is panel_1"},
    {"title":"panel_2","context":"this is panel_2"}
]

for(let i = 0;i < infoList.length; i++) {
    <PanelInfo panelDetail={this.state.infoList[i]}/>
}
阅读 12.1k
3 个回答
render() {
    let infoList = this.state.infoList;

    return (
        <div>
            //根据infoList的长度动态渲染子组件,并且将infoList[i]的信息传入子组件显示
            {
                infoList.map((item, index)=>{
                    return  <PanelInfo key={index} panelDetail={item}/>
                })
            }
        </div>
    );
},
render(){
   let list = []
   if(this.state.infoList.length>0){
    this.state.infolist.map((item)=>{
      list.push(<p key={item.key}>{item.content}<p>)
    })
   }
   return (
     <div>
       {list}
     </div>
   )
}

可以在子组件直接获取,不用从父组件传给子组件;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题