Как иметь возможность использовать метод вне своего класса в функции React Native - PullRequest
2 голосов
/ 20 июня 2020

Мне трудно выполнить метод класса вне его и в функции

class Player extends Component {
  constructor(props) {
    super(props);
  }

  test(){
    console.log('test')
  }

}
export default Player;

то, что я пытался сделать:

function() {
 Player.test();
}

class Player extends Component {
 constructor(props) {
  super(props);
 }

 test(){
  console.log('test')
 }

}
export default Player;

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

Ответы [ 4 ]

1 голос
/ 20 июня 2020

Для этого вы должны включить Player в render класса, который вы хотите выполнить. Затем установите ref для этого Player компонента, а затем вызовите свою функцию через ref.

Вот рабочий пример ...

import React, { Component } from 'react';
import { Text, View } from 'react-native';
import Constants from 'expo-constants';


class Player extends Component {
  constructor(props) {
    super(props);
  }

  test(){
    console.log('test')
  }

  render() {
    return(
      null
    )
  }
}


export default class App extends Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    this.Player.test()
  }

  render() {
    return(
      <View>
        <Text>Test</Text>
        <Player ref={component => this.Player = component}/>
      </View>
    )
  }
}
0 голосов
/ 20 июня 2020

Создать объект класса Player в классе приложения

var obj = new Player();

now access method with the help of obj

obj.test();
0 голосов
/ 20 июня 2020

Мой вопрос: нужен ли вам Player в качестве компонента? Если нет, просто сделайте:

function() {
 new Player().test();
}

class Player {
 test(){
  console.log('test')
 }
}

export default Player;
0 голосов
/ 20 июня 2020

вы можете попробовать использовать методы stati c:

The static keyword defines a static method for a class. Static methods aren't called on instances of the class. Instead, they're called on the class itself. These are often utility functions, such as functions to create or clone objects.

class ClassWithStaticMethod {
  static staticMethod() {
    return 'static method has been called.';
  }
}

console.log(ClassWithStaticMethod.staticMethod());
// expected output: "static method has been called."

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static

...