当前位置: 首页 > 知识库问答 >
问题:

在每次单击父组件时都会使用新道具将子组件添加到子组件

萧越泽
2023-03-14

我是个新手,所以不要用任何非技术性的词语。我有一个父组件,它在单击按钮时有一个按钮元素,调用一个函数来创建一个新对象。我想要的是,当用户单击这个按钮时,子组件应该呈现在父按钮元素下面,每次单击按钮时,新对象应该作为道具传递给子组件,以便它可以在屏幕上显示它,但以前调用的子组件应该保留在屏幕上。

从React导入;

class childcomponent extends React.PureComponent{
    state = { data: this.props.data }
        render(){
            return(
            <div>
                <span>Name: {this.state.data.name}</span>
                <span>Lastname: {this.state.data.lastname}</span>
            </div>
        )
    }
}

类父母组件扩展反应。PureComponent{

handleAddChild=(e)=>{
    e.preventDefault();
        //Here i form the object
        const user = {
        //key:value
        }
        //want to render child component from here
}

render(){
    return(
    <div>

    {/* //some code
    //some code
    //some code */}

    <button onClik={this.handleAddChild} >Save</button>

    {/* //want to render child component here </childcomponent> */}

    </div>
    );
}

}

共有3个答案

颛孙安康
2023-03-14

在父组件中创建一个数组,并存储与父组件的State值相同的值,通过子组件中的数组将此数组作为道具传递给子组件循环,以获得尽可能多的列表组件

子组件

let List=this.props.data.map(item=>(
<div>
                <span>Name: {this.state.data.name}</span>
                <span>Lastname: {this.state.data.lastname}</span>
            </div>
))
        render(){
            return(
            <List/>
        )
    }
}````
井斌斌
2023-03-14

在react中,您需要考虑您的JSX(HTMLJS)已经准备好显示子组件,并且只等待状态显示它。首先,您需要父组件的状态和一些空对象state={child:{})

然后在渲染方法中

{!!this.state.child && <Childcomponent data={this.state.child}}

然后添加方法

addChild = () => this.setState({ child: {name: 'Hi', surname: 'Hello'} })
东方高洁
2023-03-14

这里有一个让孩子们进入状态的技巧

this.state = {
 children: []
}

然后循环渲染

renderChildren = () => {
return this.state.children.map(item => {
   return <Child  />
})

}

并添加子项

handleAddChild=(e)=>{
    e.preventDefault();
        //Here i form the object
        const user = {
        //key:value
        }
   this.setState({children: [...this.state.children, user]})
}

 类似资料:
  • 我试图使用React创建简单的社交媒体软件,用户可以发布一些内容,其他人可以在提要上看到帖子。我有一个Home组件,我通过使用useHistory.push方法的登录组件向其传递道具。在Home组件中,我希望NavBar是持久的,并使用NavBar链接切换内容。每当我使用路由和链接更改子组件时,主组件重新加载并丢失道具,导致“无法读取未定义的属性用户名”错误。在道具中,我只保留登录人的用户名。 应

  • 是在切换时需要添加和删除的类。 如果使用状态来处理类名,那么内容重新发送器…示例:在子组件中有一个ajax调用,当单击menubutton时,它会重新编辑页面并返回其主页。

  • 在父组件中: 我有一个布尔状态: 我将其发送到子组件: 根据布尔值,我希望它呈现不同的组件。

  • 我对JS的反应有点陌生。我有两个问题。我来了 现在我要做的是,当应用程序组件挂载时,我生成一个对后端服务器的ajax调用,当它返回时,它更新道具,并设置状态,这样子组件也会重新呈现,但子组件不会重新呈现。谁能告诉我出了什么问题。 问题2 现在让我们假设我将进入组件二路由,它将呈现组件二,我在应用程序组件中生成一个ajax调用,根据ajax调用返回的数据,我在应用程序组件中设置了一些道具,我还希望组

  • parentcomponent.js ChildComponent.js 为什么在单击后,子组件仍然显示旧值而不重新呈现?

  • 所以我对vue的父子组件通信有问题。问题是,当我导航到一个组件后,它应该调用ajax从服务器获取数据。收到数据后,父组件应该通过道具将其发送给所有子组件,但道具数据不显示。子组件只有在我更改编辑器上的代码后才开始显示props数据。这是我父组件的代码 这是我的单一产品规格组件,不会加载道具数据: 正如我所说,我的单一产品规范组件的唯一问题不是它不会加载道具数据。问题是,当我在文本编辑器中更改代码时