Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从子组件更新父组件状态_Javascript_Reactjs - Fatal编程技术网

Javascript 从子组件更新父组件状态

Javascript 从子组件更新父组件状态,javascript,reactjs,Javascript,Reactjs,我正在事件执行时将状态设置到子组件中,并希望将其发送到父组件。我就这么找的。但仍然没有找到任何方法来做到这一点 假设我有一个家长组件家庭,还有孩子组件用户。我正在User组件中执行一些事件,当时我想将数据传递到Home组件。我该怎么做 下面是我的代码: /* Parent component */ import React, { Component } from 'react'; import User from './user'; class Home extends React.Comp

我正在事件执行时将状态设置到子组件中,并希望将其发送到父组件。我就这么找的。但仍然没有找到任何方法来做到这一点

假设我有一个家长组件家庭,还有孩子组件用户。我正在User组件中执行一些事件,当时我想将数据传递到Home组件。我该怎么做

下面是我的代码:

/* Parent component */

import React, { Component } from 'react';
import User from './user';

class Home extends React.Component{
    constructor(props){
        super(props)
        this.state = {
           isReportSent: false
        }   
    }
    render(){
        <Switch>
           <Route exact path="/" component={User}/>
        </Switch>
    }
}

/* child component */
class User extends React.Component{
    constructor(props){
        super(props)
    }
    render(){

    }
}
/*父组件*/
从“React”导入React,{Component};
从“./User”导入用户;
类Home扩展了React.Component{
建造师(道具){
超级(道具)
此.state={
isReportSent:false
}   
}
render(){
}
}
/*子组件*/
类用户扩展了React.Component{
建造师(道具){
超级(道具)
}
render(){
}
}

注意:我的父组件是路由组件,在其中我在特定路径上路由我的子组件。因此无法将任何函数传递给子组件。

您可以使用路由中的
渲染
道具将回调方法传递给子组件,然后使用该方法更新父组件

import React, { Component } from 'react';
import User from './user';

class Home extends React.Component{
    constructor(props){
        super(props)
        this.state = {
           isReportSent: false
        }   
    }
    performUpdate = () => {

    }
    render(){
        <Switch>
           <Route exact path="/" render={(props) => <User {...props} performUpdate={this.performUpdate}/>}/>
        </Switch>
    }
}

/* child component */
class User extends React.Component{
    constructor(props){
        super(props)
    }

    handleClick=() => {
       this.props.performUpdate(); //call to inform parent about change
    }
    render(){

    }
}
import React,{Component}来自'React';
从“./User”导入用户;
类Home扩展了React.Component{
建造师(道具){
超级(道具)
此.state={
isReportSent:false
}   
}
性能更新=()=>{
}
render(){
}/>
}
}
/*子组件*/
类用户扩展了React.Component{
建造师(道具){
超级(道具)
}
handleClick=()=>{
this.props.performUpdate();//调用以通知家长更改
}
render(){
}
}

您实际上可以传递一个方法,只需使用渲染属性即可

<Switch>
   <Route exact path="/" render={(props)=><User {...props} someMethod={someMethod} />}/>
</Switch>

}/>

我认为这应该被接受,因为我有答案,这是正确的。谢谢您的时间。我会让你知道一旦测试它。