Javascript 从子组件更新父组件状态
我正在事件执行时将状态设置到子组件中,并希望将其发送到父组件。我就这么找的。但仍然没有找到任何方法来做到这一点 假设我有一个家长组件家庭,还有孩子组件用户。我正在User组件中执行一些事件,当时我想将数据传递到Home组件。我该怎么做 下面是我的代码:Javascript 从子组件更新父组件状态,javascript,reactjs,Javascript,Reactjs,我正在事件执行时将状态设置到子组件中,并希望将其发送到父组件。我就这么找的。但仍然没有找到任何方法来做到这一点 假设我有一个家长组件家庭,还有孩子组件用户。我正在User组件中执行一些事件,当时我想将数据传递到Home组件。我该怎么做 下面是我的代码: /* Parent component */ import React, { Component } from 'react'; import User from './user'; class Home extends React.Comp
/* 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>
}/>
我认为这应该被接受,因为我有答案,这是正确的。谢谢您的时间。我会让你知道一旦测试它。