Immutable Record无法读取description字段问题求助
问题根源:一个拼写错误导致的Immutable Record字段访问失败
嘿,我一眼就发现问题所在了——这是个低级但致命的拼写错误!
核心问题分析
看你定义Competitor Record的代码:
export const Competitor = new Record({ decription: null, imageLink: null, key: null, });
注意这里的字段名是decription(少了一个字母s),但你在所有业务代码里使用的都是正确拼写的description:
- 创建时传的是
{ description, imageLink } - 访问时用的是
competitor.description或get('description')
Immutable Record的字段是严格与定义时的键名绑定的,大小写、拼写必须完全一致,差一个字符都无法匹配到对应的字段。这就导致:
- 当你从Firebase加载数据或创建新Competitor时,正确拼写的
description字段无法被映射到Record的decription键上 - 你访问
competitor.description时,因为Record里根本没有这个键,自然返回undefined - 控制台能看到
description是因为原始数据里存在这个字段,但它并没有被存入Immutable Record的结构化属性中
修复方案
只需要修正Record定义里的拼写错误,把decription改成description即可:
export const Competitor = new Record({ description: null, imageLink: null, key: null, });
额外注意事项
- Immutable Record的键是固定的,定义后无法动态添加新键,所有要使用的字段必须提前在Record的初始对象中声明
- 访问Record字段时,点语法和
get()方法等价,比如competitor.description和competitor.get('description')效果一致,但如果字段名是动态的,get()会更灵活 - 如果你已经在Firebase中存储了旧数据,不需要修改数据内容,修正Record定义后,后续加载的数据会自动正确映射到
description字段
修正后再测试,你就能正常获取到competitor.description的值了!
内容的提问来源于stack exchange,提问作者Puerto
相关产品推荐
相关产品推荐

