React Native使用react-native-chart-kit报错:ReadableNativeArray转ReadableMap失败
React Native股票图表报错排查方案
核心问题:数据结构不匹配组件要求
你碰到的ReadableNativeArray cannot be cast to com.facebook.react.bridge.ReadableMap错误,本质是react-native-chart-kit的LineChart组件要求特定格式的对象数据,但你传入的结构不符合,导致RN桥接层类型转换失败。
1. 先核对LineChart的data格式要求
LineChart的data必须是包含labels和datasets的对象,每个dataset里要有data数组,示例正确格式:
const chartData = { labels: ['2024-01-01', '2024-01-02', '2024-01-03'], // 你的dates数组 datasets: [ { data: [150, 160, 145], // 你的prices数组 color: (opacity = 1) => `rgba(134, 65, 244, ${opacity})`, strokeWidth: 2 } ] };
要是你直接传了prices数组或者未按要求嵌套的结构,肯定会触发类型错误。
2. 检查API数据处理逻辑
确认从AlphaVantage提取数据的过程没出错:
- AlphaVantage的每日数据存在
Time Series (Daily)字段下,日期是键,每个日期对应包含4. close(收盘价)的对象 - 处理时要把日期和价格转成纯JS数组,别留原生桥接对象,示例处理代码:
const processStockData = (rawData) => { const timeSeries = rawData['Time Series (Daily)']; const dates = Object.keys(timeSeries).reverse(); // 按时间正序排列 const prices = dates.map(date => parseFloat(timeSeries[date]['4. close'])); // 返回符合组件要求的结构 return { labels: dates, datasets: [{ data: prices }] }; };
3. 排查版本兼容性
如果数据结构没问题,再查版本适配:
react-native-chart-kit依赖react-native-svg,确保两者版本和你的RN版本匹配(比如RN 0.70+需要react-native-svg>=13.0)- 别用太老的
react-native-chart-kit版本,旧版本对RN新桥接类型支持差
4. 实用调试技巧
- 渲染LineChart前,用
console.log(JSON.stringify(chartData))打印最终传给组件的data,确认结构完全符合要求 - 先手动写静态测试数据替换API返回值,看图表能不能正常显示,快速排除API处理的问题
内容的提问来源于stack exchange,提问作者TTY
相关产品推荐
相关产品推荐

