You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:32:21