Undefined不是.map中的对象
Undefined is not an object in .map
我正在开发一个react应用程序,我尝试迭代一个数据块。块有一个unix时间,我想在它上面做一些计算,但是当我在对象上调用函数时,我得到了错误
_getTime(time) {
if (time === 0) {
return '1';
} else if (time === 2) {
return '2';
} else {
return 'stuff';
}
},
render: function() {
return (
<div className="container-fluid">
<div className="row">
<div className="col-md-12 text-center">
{this.state.daily.map(function(day) {
return (
<div key={day.time} className="key col-md-12">
<div className="col-md-3">{this._getTime(day.time)}</div>
<div className="col-md-3">{day.icon}</div>
<div className="col-md-3">{day.apparentTemperatureMax} / {day.apparentTemperatureMin}</div>
</div>
);
})}
</div>
</div>
</div>
);
},
问题是这一行<div className="col-md-3">{this._getTime(day.time)}</div>
,当我把它放在地图函数之外时,它都工作了。
如有任何帮助,不胜感激
这是因为this
是在函数调用时确定的,而不是在函数写入时确定的。您的匿名函数,由.map()
在为您迭代集合时调用,没有this
。
this.state.daily.map(day => {
// ...
});
或者,看看.bind()
,以及.map()
的第二个参数。
这是一个函数上下文,而不是组件。赋值给self变量
render: function() {
var self = this;
return (
<div className="container-fluid">
<div className="row">
<div className="col-md-12 text-center">
{self.state.daily.map(function(day) {
return (
<div key={day.time} className="key col-md-12">
<div className="col-md-3">{self._getTime(day.time)}</div>
<div className="col-md-3">{day.icon}</div>
<div className="col-md-3">{day.apparentTemperatureMax} / {day.apparentTemperatureMin}</div>
</div>
);
})}
</div>
</div>
</div>
);
}
相关文章:
- 如何将i18n.map转换为json对象
- 为什么可以't我用Set对象调用Array.prototype.map
- 将对象从另一个不可变的Map分配给Map是否意味着深度克隆
- 在CouchDB Map函数中发出日期时-对日期对象调用的内容
- 使用.map解析JSON对象时出现问题
- jQuery Map 从多个源返回 JSON 对象
- 在对象数组上使用map()检查差异
- 为什么 Array.prototype.reduce() 不接受 Map 对象作为初始值
- 递归 - 将 Javascript Map 转换为嵌套的 JSON 对象
- TypeError:undefined不是使用d3.map的对象
- 使用map迭代对象数组
- 使用map方法将javascript对象数组转换为其他对象数组
- MongoDB是否支持Map对象
- 从 _.map() 返回对象
- 在 mongo map 中调用外部 javascript 函数(对象)或减少上下文的可能方法
- 如何检查两个 Map 对象是否相等
- 如何使用jQuery.map递归修改嵌套对象
- 如何将JavaScript对象转换为Dart Map
- 我可以将JavaScript Map对象存储在Meteor的MongoDB中吗?
- Javascript操作对象:map