升级React Navigation后React Native Sound.play报空参数错误如何修复
错误原因
从你给出的日志看所有音频的_loaded字段均为true,已经完成加载,排除资源加载问题。
这个报错是因为你使用的react-native-sound版本的play方法强制要求传入回调参数(即报错提示的RCTResponseSenderBlock类型参数),不能省略或者传null。官方示例使用的旧版react-native-sound允许不传回调,所以运行正常,你升级React Navigation的过程中可能连带升级了react-native-sound版本,或是新版React Navigation的上下文执行逻辑导致原本可选的回调参数被判定为null,触发报错。
修复方案
- 方案1:给所有
play方法调用补充空回调函数
找到代码里所有调用音频play的位置,把原来的this.outgoingCall.play()这类写法改成下面的形式:
// 原来的写法(报错) this.outgoingCall.play() // 修复后的写法,传入空回调 this.outgoingCall.play(() => {})
来电、去电、挂断的所有音频播放调用,都按这个格式补充回调即可。
- 方案2:锁定
react-native-sound版本和官方示例一致
如果你不想修改原有播放逻辑,可以在package.json里把react-native-sound的版本指定为官方示例配套的v0.11.0版本,重新安装依赖即可:
npm install react-native-sound@0.11.0 # 或者用yarn yarn add react-native-sound@0.11.0
安装完成后重新编译运行项目,报错就会消失。
内容的提问来源于stack exchange,提问作者preston
相关产品推荐
相关产品推荐

