.map()undefined不是React.js中的函数
.map() undefined is not a function in React.js
好吧,我可能错过了这里显而易见的内容,但我得到了一个"Uncaught TypeError:undefined不是函数"。我似乎是.map(),这是问题所在,但我不明白为什么。
var idealist = React.createClass({
loadCommentsFromServer: function() {
$.ajax({
url: this.props.url,
dataType: 'json',
success: function(data) {
this.setState({data: data});
}.bind(this)
});
},
handleButtonClick: function(input) {
// do stuff //
},
getInitialState: function() {
return {data: []};
},
componentWillMount: function() {
this.loadCommentsFromServer();
setInterval(this.loadCommentsFromServer, this.props.pollInterval);
},
render: function() {
var clickFunction = this.handleButtonClick;
var ideas = this.state.data.map(function(i){
return <ideabox data={i} onButtonClick={clickFunction} />;
});
return (
<div className="idealist">
{ideas}
</div>
);
}
});
React.renderComponent(
<idealist url="/json/quotes.php" pollInterval={2000}/>,
document.getElementById('quoteList')
);
如果我将其更改为var ideas=this.state.data我没有收到任何错误,JSON数据的格式是正确的,有什么问题吗?
这是一个愚蠢的错误,quotes.php没有返回正确格式的JSON数据,所以它不是一个数组。正在调用map()。吸取了什么教训?不要相信别人的代码是有效的!
.map()
是一种方法,用于创建一个带有所提供结果的新数组。
以下是相关文档:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
这里可以做的事情是更改对象的.data
属性以返回一个数组。由于.map()
仅适用于Array类型的对象。
如果这对任何人都有帮助,另一个容易忽略的错误是将变量初始化为空对象,而不是状态中的空数组并调用map()。
例如,在下面声明
const [list, setList] = useState({});
而不是
const [list, setList] = useState([]);
并尝试在对象上调用map()
list.map((item)=>{
//do something
})
将导致";undefined不是附近的函数。。。list.map(…"组件加载过程中的错误
相关文章:
- 当js函数's已执行
- 调用php数组中的JS函数
- 为JS函数添加延迟
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- 使用JS函数来使用另一个函数的语法?node.js
- 将JS函数传递给Emscripten生成的代码
- 是否可以在使用headerphp函数后自动调用JS函数
- 如何在.js函数中检索来自其他模板的表单的目标值
- 简单的JS函数.需要对变量进行澄清
- 无法识别从php创建的Js函数
- 如何将对象传递给这个js函数
- 全局窗口热键在最小化chrome窗口时调用js函数
- 将重定向URL链接添加到JS函数
- 从PHP调用JS函数不起作用
- js函数堆栈传入变量,.hide()不起作用
- 当运行JS函数时,如何在c#中的Edgejs中获取错误文本
- 如何让JS函数自行执行
- 使用默认js函数的javascript中的日期的第二天
- 如何从页面中的jquery调用angular js函数控制器
- 从.js文件调用html中的js函数