Javascript .map()未定义不是React.js中的函数
是的,我可能忽略了这里显而易见的一点,但我得到了一个“未捕获的TypeError:undefined不是一个函数”,我似乎是。map()这就是问题所在,但我不明白为什么Javascript .map()未定义不是React.js中的函数,javascript,reactjs,react-jsx,Javascript,Reactjs,React Jsx,是的,我可能忽略了这里显而易见的一点,但我得到了一个“未捕获的TypeError:undefined不是一个函数”,我似乎是。map()这就是问题所在,但我不明白为什么 var idealist = React.createClass({ loadCommentsFromServer: function() { $.ajax({ url: this.props.url, dataType: 'json', success: function
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-idealist=React.createClass({
loadCommentsFromServer:函数(){
$.ajax({
url:this.props.url,
数据类型:“json”,
成功:功能(数据){
this.setState({data:data});
}.绑定(此)
});
},
把手按钮点击:功能(输入){
//做事//
},
getInitialState:函数(){
返回{data:[]};
},
componentWillMount:function(){
this.loadCommentsFromServer();
setInterval(this.loadCommentsFromServer,this.props.pollInterval);
},
render:function(){
var clickFunction=this.handleButtonClick;
var ideas=this.state.data.map(函数(i){
返回;
});
返回(
{ideas}
);
}
});
React.renderComponent(
,
document.getElementById('quoteList'))
);
如果我把它改成
var ideas=this.state.data
我没有收到任何错误,JSON数据格式正确,有什么问题吗?.map()
是一种使用提供的结果创建新数组的方法
以下是相关文件:
这里可以做的事情是更改对象的
.data
属性以返回数组。因为.map()
只能用于数组类型的对象 这是一个愚蠢的错误,quotes.php没有返回正确格式的JSON数据,因此它不是一个数组。正在调用map()。吸取了什么教训?不要相信别人的话,他们的代码是有效的 您确定this.state.data是数组吗?是JavaScript数组上的函数;它不是由React定义的。请确保this.state.data
是一个数组。这就是为什么我感到困惑,就我所知,state必须是一个数组,state.data是在getInitialState:function()中定义的,{return{data:[]};},。state.data由loadCommentsFromServer更新。正在讨论的脚本返回正确格式的JSON数据state
始终是一个对象,而不是数组。您可以粘贴来自Ajax调用的示例返回值吗。我唯一的猜测是数据
不是JSON响应中的数组。实际上,映射
适用于任何类似数组的对象,但您需要通过显式设置此
值。调用
或。应用
或键入它。