Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
Reactjs 反应:如何从子组件访问父组件的类名而不将其作为道具传递?_Reactjs - Fatal编程技术网

Reactjs 反应:如何从子组件访问父组件的类名而不将其作为道具传递?

Reactjs 反应:如何从子组件访问父组件的类名而不将其作为道具传递?,reactjs,Reactjs,假设您有一个父组件: // ParentComponent class ParentComponent extends React.Component { render() { return( <ChildComponent/> ) } } //父组件 类ParentComponent扩展了React.Component{ render(){ 返回( ) } } 在子组件内部,有没有一种方法可以访问父组件的类名而不将其作为道具传递 // C

假设您有一个父组件:

// ParentComponent

class ParentComponent extends React.Component {

  render() {
    return(
      <ChildComponent/>
    )
  }
}
//父组件
类ParentComponent扩展了React.Component{
render(){
返回(
)
}
}
在子组件内部,有没有一种方法可以访问父组件的类名而不将其作为道具传递

// ChildComponent

class ChildComponent extends React.Component {

  // ?????
  getParentComponentName() {
    return this.???  // Should return "ParentComponent"
  }

  render() {
    return(
      <div/>
    )
  }
}
//子组件
类ChildComponent扩展了React.Component{
// ?????
getParentComponentName(){
返回此项。??//应返回“ParentComponent”
}
render(){
返回(
)
}
}

我更希望能够访问它,而不将其作为道具传递下去。谢谢大家!

您需要像这样访问

class Child extends React.Component {
    constructor(props) {
        super(props);
        this.state = { name: '' }
    }
    getParentName = () =>{
        this.setState({ name: this._reactInternalFiber._debugOwner.type.name })
    }
    render() {
        return (
            <div>
                <h1>Name: {this.state.name}</h1>
                <button onClick={this.getParentName}>Get Parent Name</button>
            </div>
        )
    }
}
类子级扩展React.Component{
建造师(道具){
超级(道具);
this.state={name:'}
}
getParentName=()=>{
this.setState({name:this.\u reactInternalFiber.\u debugOwner.type.name})
}
render(){
返回(
名称:{this.state.Name}
获取父名称
)
}
}

您需要像

class Child extends React.Component {
    constructor(props) {
        super(props);
        this.state = { name: '' }
    }
    getParentName = () =>{
        this.setState({ name: this._reactInternalFiber._debugOwner.type.name })
    }
    render() {
        return (
            <div>
                <h1>Name: {this.state.name}</h1>
                <button onClick={this.getParentName}>Get Parent Name</button>
            </div>
        )
    }
}
类子级扩展React.Component{
建造师(道具){
超级(道具);
this.state={name:'}
}
getParentName=()=>{
this.setState({name:this.\u reactInternalFiber.\u debugOwner.type.name})
}
render(){
返回(
名称:{this.state.Name}
获取父名称
)
}
}

Event如果不作为道具传递是可能的,那么你不应该这样做为什么不使用static,我的意思是你可以在父组件中创建一个静态函数并在子组件中使用它。你能在这里分享这个用例吗?Event如果不作为道具传递是可能的,那么你不应该使用static,我的意思是你可以在父组件中创建一个静态函数,然后在子组件中使用它。你能在这里分享这个用例吗?