Javascript 在React中如何将道具从孩子传递给家长?

Javascript 在React中如何将道具从孩子传递给家长?,javascript,reactjs,Javascript,Reactjs,我有一个动态表,它呈现用户选择的项目列表。用户可以从下拉菜单中选择一个项目,然后将该项目添加到列表中。现在,我将项目列表存储在组件的状态中,这允许动态呈现表。我希望用户能够单击表中的某个项目,并能够编辑该项目的某些部分,例如他们正在选择的数量。一旦用户从表中单击该项,就会出现一个模式,其中包含来自该特定项的信息。我的问题是,在模式中,当用户更改(比如该项目的数量)时,我希望模式关闭,然后使用用户更改的值更新表 有没有办法将更新后的项目列表传回给家长?或者这是不可行的?如果是这样的话,正确的方法是

我有一个动态表,它呈现用户选择的项目列表。用户可以从下拉菜单中选择一个项目,然后将该项目添加到列表中。现在,我将项目列表存储在组件的状态中,这允许动态呈现表。我希望用户能够单击表中的某个项目,并能够编辑该项目的某些部分,例如他们正在选择的数量。一旦用户从表中单击该项,就会出现一个模式,其中包含来自该特定项的信息。我的问题是,在模式中,当用户更改(比如该项目的数量)时,我希望模式关闭,然后使用用户更改的值更新表

有没有办法将更新后的项目列表传回给家长?或者这是不可行的?如果是这样的话,正确的方法是什么。我将在下面发布我的代码,这样你们就可以更好地了解我要实现的目标

注意我的模式尚未完成,但我只想知道如何将道具传递回父组件

Parent.js


导出默认父组件{
建造师(道具){
超级(道具);
此.state={
ItemList=[],
idc=“”,
}
AddItemHandler(){
…要添加到项目列表的内容
}
RenderModal(){
让itemList=this.state.itemList
}
行单击(e){
//console.log(e.target.id)
var items=this.state.ItemList;
for(设i=0;i
您不能将道具从孩子传递给家长。但是,孩子可以通过一些方式与其家长沟通,这可以解决您的问题

方法通常是使用回调-将一个函数从父级传递给子级,子级可以调用该函数来更新父级的状态。下面是一个更新父级状态的示例:

function Parent() {
    const [counter, setCounter] = useState(0)
    return (
        <div>
            Current: {state}
            <Child increment={() => {
                setCounter(current => current + 1)
            }}}/>
        </div>
    )
}

function Child(props) {
    return <button onClick={props.increment}>Click me</button>
}
函数父函数(){
常量[计数器,设置计数器]=使用状态(0)
返回(
当前:{state}
{
设置计数器(电流=>电流+1)
}}}/>
)
}
功能儿童(道具){
返回单击我
}
(这个例子是使用钩子完成的,我强烈建议学习钩子)

这里没有挂钩:

class Parent extends Component {
    constructor() {
        this.state = { counter: 0 }
    }
    render() {
        return (
            <Child increment={() => {
                this.setState((current) => {
                    return { counter: current.counter + 1 }
                })
            }}}/>
        )
    }
}

function Child(props) {
    return <button onClick={props.increment}>Click me</button>
}
类父级扩展组件{
构造函数(){
this.state={counter:0}
}
render(){
返回(
{
此.setState((当前)=>{
返回{counter:current.counter+1}
})
}}}/>
)
}
}
功能儿童(道具){
返回单击我
}

是否有一种方法可以在不使用挂钩的情况下更新此答案,我不知道这些工具是如何工作的,因此这使我对这个示例有点困惑。谢谢。