react如何实现动态增加一个组件

页面内包含一个组件和一个增加按钮,如何实现点击增加按按钮复制这个组件呢。使用React.cloneElement()这个API吗。
像图中的点击蓝色按钮,新增一个黑色组件图片描述

阅读 33.3k
4 个回答

假设这个组件为<NewConpmonent />

state = {componnetArray: [1]};
addComponent = () => {
    let arr = [...this.state.componnetArray];
    arr.push(1);
    this.setState({
        componnetArray: arr
    })
}

//存放组件的地方写法如下
<div>
    //根据this.state.componentArray数组的长度来新增组件
    {this.state.componentArray.map((item, index) => <NewConpmonent key={index} />))}
    <Button onClick={addComponent}></Button>
</div>

并不需要。

const BlackComponent = () => <div>我是黑色组件</div>
export default class extends React.Component{
    constructor(props) {
        super(props);
        this.state = {comps : []}
    }
    
    render() {
        const {comps } = this.state;
        return (
            <div>
                {comps.map(comp => {
                    return <BlackComponent key={comp} />
                })}
            <p>---------------</p>
            <button onClick={() => this.setState({comps: comps.concat([Date.now()])})}>加组件</button>
            </div>
        );
    }
}

在线示例

用数组循环渲染组件,添加直接给数组添加一个值,重新渲染即可

可以使用rc-notification

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