如何从另一个类React-native调用函数

时间:2020-02-05 09:21:42

标签: reactjs react-native react-redux

我正在尝试从另一个类调用函数,它引发错误getValue不是函数。我不想使用静态。我希望有解决方案。这是我的代码

import React, { Component } from "react";
import SecondClass from "./main"

export default class A extends Component{
  constructor (props) {  
    super(props)

 onPress = ()=>{
   getValue()

 }
}

//SecondClass
export default class SecondClass extends Component{
  constructor (props) {  
    super(props)
  }
  getValues = () => {
    alert("Hello")
  }   
}

3 个答案:

答案 0 :(得分:0)

我认为您需要在A中定义函数,然后在SecondClass组件中将函数作为道具传递。

答案 1 :(得分:0)

https://www.npmjs.com/package/react-native-simple-events

您可以在此处使用此库,可以注册功能并可以从应用程序中的任何位置触发。

要注册功能,请在类on("eventID", "listenerID", ()=>{//call getValues})中使用SecondClass

要触发您的函数,请在类trigger("eventID", eventData)中使用A

之后,通过使用remove("eventID", "listenerID")类中的SecondClass删除监听器

答案 2 :(得分:0)

您不能指望您可以简单地在另一个类中调用某个函数,因为您导入了该类。如果这些是父子组件,那么React的方法是将该函数作为道具传递。如果没有,我强烈建议从两个类中提取出通用函数,然后分别调用它们。

从注释中,如果您绝对希望将功能耦合到static类,则其他用户也建议使用Second函数。

我的主要目的是当用户按下按钮时,它应该从另一个类调用该方法并返回Hello。然后,稍后我想设置一些在静态函数中无法实现的属性。那就是为什么我不想使用静态函数

从您的示例代码中,看起来Second是一个React组件吗?如果要使此类封装某些行为,则建议将其转换为普通的javascript类,然后在必要时实例化/使用。