Как вызвать функцию класса из другого файла в React Native? - PullRequest
0 голосов
/ 19 октября 2018

Это мой начальный экран:

LoginScreen.js

import { Toast } from 'native-base'

class LoginScreen extends Component {

  showError(error) {
    Toast.show({
      text: error
    })
  }

.....

}

export default connect(mapStateToProps)(LoginScreen)

Я пытаюсь вызвать приведенную ниже функцию showError, например:

loginAction.js

import LoginScreen from './LoginScreen'

let a = LoginScreen.showError('Testing')

Я получаю сообщение об ошибке:

LoginScreen.showError() is not a function

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вы можете статически определить метод, который вы хотите вызвать в другом файле.В вашем случае:

import { Toast } from 'native-base'

class LoginScreen extends Component {

  static showError(error) {
    Toast.show({
      text: error
    })
  }

.....

}

export default connect(mapStateToProps)(LoginScreen)

А затем просто назовите это как:

import LoginScreen from './LoginScreen'

let a = LoginScreen.showError('Testing')
0 голосов
/ 19 октября 2018

Поскольку showError не относится к LoginScreen и не использует его экземпляр, это не должно быть его методом.Использование классов в качестве пространств имен является антипаттерном в современном JavaScript, модули ES служат для этой цели:

export function showError(error) {
  Toast.show({
    text: error
  })
}

class LoginScreen extends Component {...}

Поскольку showError не делает ничего, что было бы характерно для экрана входа в систему и может быть повторно использовано в других местах, его можно переместить из LoginScreen в общий модуль.

...