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

React Native+Mobx创建类实例Map报错:赋值源需为对象,Map能否存类?

问题解决:Mobx + React Native中Map存储类实例的错误与疑问

嘿,我来帮你搞定这两个问题!

1. 先解决你遇到的错误:"in this environment the sources for assign must be an object"

你代码里创建Coin实例的写法有语法错误,直接导致了这个问题:

// 错误写法:用小括号包裹对象,这不是合法的JS对象字面量
new Coin(('_id': value._id), exchange, name, currency)

正确的对象字面量应该用大括号{},改成这样就可以修复:

// 修复后的代码
this.perCoinData.set(
  key, new Coin({_id: value._id}, exchange, name, currency)
);

为什么会报错?
这个错误提示说明你的Coin类构造函数内部大概率使用了Object.assign方法,而你之前传入的第一个参数是个语法错误的表达式,不是合法的对象,Object.assign无法识别处理,所以抛出了这个错误。

2. 疑问解答:Map能否存储类实例?

当然可以!JavaScript的Map是非常灵活的数据结构,它的值可以是任意类型的JS值——包括类实例、函数、其他对象、基本类型(字符串、数字等)都没问题。你用Map来存储Coin类的实例完全符合Map的设计场景,只要你的键是合法的类型(这里你用的是原pieData的字符串键,完全没问题)。

额外小建议

如果你的Coin类构造函数支持接收单个配置对象,你可以把所有参数整合到一个对象里传入,代码会更清晰易读:

new Coin({
  _id: value._id,
  exchange,
  name,
  currency
})

内容的提问来源于stack exchange,提问作者ionush

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:23:33