Как вызвать функцию из другого класса React-native - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь вызвать функцию из другого класса, она выдает ошибку getValue не является функцией. я не хочу использовать стати c. Я надеюсь, что есть решение для этого. вот мой код

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 голосов
/ 05 февраля 2020
https://www.npmjs.com/package/react-native-simple-events

Вы можете использовать эту библиотеку, здесь вы можете зарегистрировать свою функцию и запускать ее из любого места в приложении.

Для регистрации вашей функции используйте on("eventID", "listenerID", ()=>{//call getValues}) в классе SecondClass

Для запуска вашей функции используйте trigger("eventID", eventData) в классе A

После этого удалите слушателя с помощью remove("eventID", "listenerID") из класса SecondClass

0 голосов
/ 17 февраля 2020

Вы не можете ожидать, что вы можете просто вызвать какую-то функцию в другом классе, потому что вы импортировали этот класс. Реактивный способ сделать это - передать функцию в качестве реквизита, если это родительские и дочерние компоненты. Если нет, я бы настоятельно рекомендовал извлечь общую функцию из обоих классов и вызывать их отдельно.

Из комментариев другие пользователи также рекомендовали использовать функцию static, если вы абсолютно хотите связать функцию с Second class.

Моя основная цель - когда пользователь нажимает кнопку, он должен вызвать метод из другого класса и вернуть Hello. Затем позже я хочу установить некоторые свойства, которые я не могу использовать в функции stati c. Так вот почему я не хочу использовать функцию stati c

Из вашего примера кода выглядит, что Second является компонентом React? Если бы этот класс был создан для инкапсуляции определенного поведения, я бы порекомендовал превратить его в простой javascript класс, а затем создать экземпляр / использовать там, где это необходимо.

0 голосов
/ 05 февраля 2020

Я думаю, вам нужно определить функцию в A, а затем передать функцию в компоненте SecondClass как пропеллер ...

...