我试图使用原生react 播放声音,但在运行应用程序时遇到了这个问题: TypeError:Null不是对象(计算""RNSound.IsAndroid"") ,我认为这个问题是包裹本身造成的,请帮帮忙

import React, {useEffect, useState} from 'react';
import {View, StyleSheet, TouchableOpacity} from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';

var Sound = require('react-native-sound');


Sound.setCategory('Playback');

var audio = new Sound(
  'https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3',
  null,
  error => {
    if (error) {
      console.log('failed to load the sound', error);
      return;
    }
    // if loaded successfully
    console.log(
      'duration in seconds: ' +
        audio.getDuration() +
        'number of channels: ' +
        audio.getNumberOfChannels(),
    );
  },
);
const App = () => {
  const [playing, setPlaying] = useState();
  useEffect(() => {
    audio.setVolume(1);
    return () => {
      audio.release();
    };
  }, []);
  const playPause = () => {
    if (audio.isPlaying()) {
      audio.pause();
      setPlaying(false);
    } else {
      setPlaying(true);
      audio.play(success => {
        if (success) {
          setPlaying(false);
          console.log('successfully finished playing');
        } else {
          setPlaying(false);
          console.log('playback failed due to audio decoding errors');
        }
      });
    }
  };
  return (
    <View style={styles.container}>
      <TouchableOpacity style={styles.playBtn} onPress={playPause}>
        <Ionicons
          name={playing ? 'ios-pause-outline' : 'ios-play-outline'}
          size={36}
          color={'#fff'}
        />
      </TouchableOpacity>
    </View>
  );
};
const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
    backgroundColor: '#000',
  },
  playBtn: {
    padding: 20,
  },
});
export default App;

我试着用Yarn 安装这个包,但也出现了同样的问题 当我在expo 上运行这款应用程序时,它不起作用

推荐答案

你不能在expo 使用这个包,因为它需要一些本地链接,这需要一个纯粹的react 本地项目.

如果您想使用EXPO播放声音,可以使用EXPO SDK(https://docs.expo.dev/versions/latest/sdk/audio/)中的Audio API

Reactjs相关问答推荐

在react中向数组状态添加值时出错

404使用GitHub操作部署Next.js应用程序时出错

Redux Store未触发React组件中的重新呈现

可以使用mode.css/mode.scss引用常规的类名吗?

定位数组中的一项(React、useState)

在 React 中使用forwardRef时无法声明自定义属性

在一个事件处理程序中进行多次调度是个好主意吗?

如何更新redux状态存在的输入框

React - 如何重定向页面以显示数据修改?

React Js和Firestore中如何将当前ID与集合中的ID查询以仅显示具有相似字段和值的文档-第二部分

无法从子组件传递数据到父组件

如何在 JS 中绘制具有不同笔画宽度的样条线

卸载 React 组件时未清除本地存储项目

如何在使用 React Router v6 将当前页面的状态传递给上一页的同时导航到上一页?

为什么我会收到此错误:无法在我的react 包上读取 null 的属性(读取useState)?

FlatList 不在 React Native 中呈现项目

React - 拖放 UML

如何根据数据库中的值设置单选按钮选中? - react

如何在 React JS 上使文本中的单词可点击

CORS 政策:无访问控制允许来源-AWS 和 Vercel