Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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_React Native_React Redux_React Bootstrap - Fatal编程技术网

Javascript 反应:如何激发父组件方法?

Javascript 反应:如何激发父组件方法?,javascript,reactjs,react-native,react-redux,react-bootstrap,Javascript,Reactjs,React Native,React Redux,React Bootstrap,如何从组件访问此组件所有者的方法 也就是说,(可能)您需要获取一个指向元素所有者的指针,并且已经通过该指针调用了该方法 例如: 组成部分#1 类MyReport扩展组件{ 我的_方法(){} render(){ 返回( ); } } 和组件#2 类MyElement扩展组件{ 建造师(道具){ 超级(道具); this.handleClick=this.handleClick.bind(this); } handleClick(事件){ //获取方法所有者的my_方法 log(parent.m

如何从组件访问此组件所有者的方法

也就是说,(可能)您需要获取一个指向元素所有者的指针,并且已经通过该指针调用了该方法

例如:

组成部分#1

类MyReport扩展组件{
我的_方法(){}
render(){
返回(
);
}
}
和组件#2

类MyElement扩展组件{
建造师(道具){
超级(道具);
this.handleClick=this.handleClick.bind(this);
}
handleClick(事件){
//获取方法所有者的my_方法
log(parent.my_方法());
}
render(){
回程压力机;
}
}

如果您正在寻找如何调用父组件的方法,只需通过子组件的道具将其传递:

组成部分#1

类MyReport扩展组件{
我的方法(){
}
render(){
返回(
);
}
}
组成部分#2

类MyElement扩展组件{
建造师(道具){
超级(道具);
this.handleClick=this.handleClick.bind(this);
}
handleClick(事件){
//获取方法所有者的my_方法
console.log(this.props.methodFromParent);
}
render(){
返回(
按
);
}
}

尽管如此,用
MyReport
包装
MyElement
似乎是你在写这个问题时犯的一个错误。

如果你想知道如何调用父组件的方法,你只需通过子组件的道具传递它:

组成部分#1

类MyReport扩展组件{
我的方法(){
}
render(){
返回(
);
}
}
组成部分#2

类MyElement扩展组件{
建造师(道具){
超级(道具);
this.handleClick=this.handleClick.bind(this);
}
handleClick(事件){
//获取方法所有者的my_方法
console.log(this.props.methodFromParent);
}
render(){
返回(
按
);
}
}

虽然,您在编写此问题时使用
MyReport
包装
MyElement
似乎是一个错误。

myu方法作为道具从家长传递给孩子,然后您就可以访问它了。它是React.pass
my_method
中最基本的概念,作为一个道具,从父对象传递给子对象,然后您就可以访问它。这是React中最基本的概念。这个选项确实是我问题的解决方案,但是在没有明确的所有者指示的情况下,是否可以这样做<代码>
而不是
在这种情况下,不可以。您可以使用高阶组件包装MyElement,但组合应该始终是您的思维方式。这里提出了一个很好的观点:这个选项确实是我问题的一个解决方案,但是在没有明确的所有者指示的情况下,有可能做到吗<代码>而不是
在这种情况下,不可以。您可以使用高阶组件包装MyElement,但组合应该始终是您的思维方式。这里提出了一个很好的观点:
class MyReport extends Component {
  my_method() {}

  render() {
    return (
      <MyReport>
        <MyElement />
      </MyReport>
    );
  }
}
class MyElement extends Component {
  constructor(props) {
    super(props);

    this.handleClick = this.handleClick.bind(this);
  }

  handleClick(event) {
    // GET METHOD my_method OF OWNER
    console.log(parent.my_method());
  }

  render() {
    return <Button onClick={this.handleClick}>Press</Button>;
  }
}