当前位置: 首页 > 面试题库 >

无法通过ref访问子功能?

幸鸿轩
2023-03-14
问题内容

最初一切正常,我有一个类似的组件。这个

  class A extends React.Component {
     constructor(props) {
       super(props);
       this.childRef = null
     }

    componentDidMount() {
     this.childRef = this.refs.b
     // now I can call child function like this
      this.childRef.calledByParent()
    }

    render(){
      <B ref = "b"/>
    }
  }

在其他档案中

     class B extends React.Component {

       calledByParent(){
         console.log("i'm called")
        }

       render(){
        <div> hello </div>
       }
  }
 export default B

到这里为止一切正常,但是当我在 class B export default connect(mapStateToProps, mapDispatchToProps)(B)

它不起作用。我已经从react-redux导入了connect


问题答案:

connect()接受option为第四参数。在此选项参数中,您可以将flag设置withRef为true。之后,您可以使用getWrappedInstance()like
来访问ref的函数

class A extends React.Component {
     constructor(props) {
       super(props);
       this.childRef = null
     }

    componentDidMount() {
        this.childRef.getWrappedInstance().calledByParent()
    }

    render(){
      <B ref = {ref => this.childRef = ref}/>
    }
  }

class B extends React.Component {

       calledByParent(){
         console.log("i'm called")
        }

       render(){
        <div> hello </div>
       }
  }
   export default  connect(mapStateToProps, mapDispatchToProps, null, {withRef: true})(B)


 类似资料:
  • 为什么我不可以通过ref获取盒子的dom(vue3)

  • 我开始探索JavaFX FXML应用程序技术。 null 并且两者具有相同的event。TextFields是用于登录/注册用户名的字段。 我的目标是将TextField中的值复制到场景中的值。使用上面的代码可以很好地工作。然而,首先,我尝试用以下方法访问另一个场景中的元素: 而且是错误的。确切地说,是。 为什么有些元素是用方法找到的,而不是用注释找到的?

  • 本文向大家介绍Vue通过ref父子组件拿值方法,包括了Vue通过ref父子组件拿值方法的使用技巧和注意事项,需要的朋友参考一下 父拿子的值 子拿父的值 有了ref拿值不能更方便~ 以上这篇Vue通过ref父子组件拿值方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 这是一个测试类: 这是我的输出: 我缺少通过反射使注释可见的什么? 我是否仅需要检查它们的存在就需要注释处理器? 问题答案: 为了在运行时访问注释,它需要具有运行时的保留策略。 否则,注释将被丢弃,并且JVM无法识别它们。 有关更多信息,请参见此处。

  • 我在Ubuntu16.0.4上安装了一个新的Opencv,我编写了一个程序来获取相机流并存储一些帧。它“没有”问题。但不能通过Systemd工作。systemd单元处于活动状态(不要失败),但目标文件夹中没有帧存储。 我一步一步地寻找问题,我发现代码挂在打开摄像头流上。那就是:帽子。打开(“MyIpCameraAddress”) 我试着通过bash脚本而不是脚本来运行代码。但问题依然存在 说明=a

  • 我有一个带有Web触发器endpoint的Azure函数设置,我想将其用作React应用程序的后端。没有身份验证设置,它工作正常。当我使用AD设置应用服务身份验证时,当我直接通过浏览器访问时(身份验证后),它工作正常,但当我尝试从提供承载令牌的JS访问时,我得到了401。 客户端应用程序正在Azure上运行,并已注册为Azure AD应用程序。我能够成功地验证、查询AD和使用MS Graph AP