Передача функции из класса в URL плеера React-Native

Итак, я получил на одной из моих страниц моего собственного React функциональность проигрывателя треков (TrackPlayer) и пользовательский интерфейс (класс Player). Каким-то образом мне удалось заставить их работать вместе, но теперь я хочу, чтобы плеер воспроизводил песни динамически.

В классе player у меня есть функция meditationList(), которая возвращает адрес, который я хотел бы использовать для URL-плеера. Однако я не могу получить к нему доступ, потому что находятся в разных компонентах. В принципе, я бы хотел, чтобы URL-адрес Trackplayer воспроизводил "JSON.stringify(adress.meditation.meditationPlayerAdress);"(это возвращает тот же адрес, что и URL-адрес). Любая помощь, в которой я ошибаюсь, будет настоящей помощью. На момент


TrackPlayer.setupPlayer().then(async () => {
  // Adds a track to the queue

  await TrackPlayer.add({
    id: 'trackId',
    url: require('../../../assets/track.mp3'),
    title: 'Track Title',
    artist: 'Track Artist',
  });

  let trackId = await TrackPlayer.getCurrentTrack();

  // Starts playing it
  TrackPlayer.stop();
});

export default class Player extends React.Component<Props> {
  pause = () => {
    TrackPlayer.pause();
    console.log(TrackPlayer);
  };

  stop = () => {
    TrackPlayer.stop();
    console.log(TrackPlayer);
  };
  play = () => {
    TrackPlayer.play();
    console.log(TrackPlayer.getState());
  };
  meditationList = () => {
    const adress = this.props.route.params;

    return JSON.stringify(adress.meditation.meditationPlayerAdress);
  };

  state = {
    trackLength: 300,
    timeElapsed: '0:00',
    timeRemaining: '5:00',
  };

  changeTime = (seconds) => {
    this.setState({timeElapsed: Moment.utc(seconds * 1000).format('m:ss')});
    this.setState({
      timeRemaining: Moment.utc(
        (this.state.trackLength - seconds) * 1000,
      ).format('m:ss'),
    });
  };

  render() {
    return (
      <SafeAreaView style={styles.container}>
        <View style={{alignItems: 'center'}}>
          <View style={{alignItems: 'center', marginTop: 24}}>
            <Text style={[styles.textLight, {fontSize: 12}]} />

            <Text
              style={[
                styles.text,
                {fontSize: 15, fontWeight: '500', marginTop: 8},
              ]}>
              {this.meditationList()}meditations
            </Text>
          </View>

          <View style={styles.coverContainer}>
            <Image
              source={require('../../../assets/coverArt.jpg')}
              style={styles.cover}
            />
          </View>

          <View style={{alignItems: 'center', marginTop: 32}}>
            <Text style={[styles.textDark, {fontSize: 20, fontWeight: '500'}]}>
              Exhale
            </Text>
            <Text style={[styles.text, {fontSize: 16, marginTop: 8}]}>sal</Text>
          </View>
        </View>

0 ответов