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
相关产品推荐
相关产品推荐

