当我习惯从json api获取数据时,它会抛出“意外令牌”错误。下面,我已经添加了我迄今为止尝试过的代码。让我从这个问题中解脱出来。我想长时间解决这个问题。
下面,
var Demo = React.createClass({
render: function() {
getInitialState:function(){
return {
data:[]
};
},
componentDidMount: function () {
$.ajax({
url: "http://www.w3schools.com/angular/customers.php"
}).done(function(data) {
this.setState({data: data})
});
},
return (
<div>
{this.props.data.map(function(el,i) {
return <div key={i}>
<div>{el.Name}</div>
<div>{el.City}</div>
<div>{el.Country}</div>
</div>;
}
</div>
);
}
});
var Stream = React.createClass({
render: function() {
return (
<div>
<div className="scrollContent ">
<Demo />
</div>
</div>
);
}
});
答案 0 :(得分:3)
您的代码中有几处错误
getInitialState
方法移动componentDidMount
和render
,这些方法应该是您的组件(Demo
)类的子级,而不是render
的子级方法dataType: 'json'
添加到$.ajax
,因为现在它返回字符串,但在您的情况下,您需要获取json
this.setState
中使用.done
时,您应该将this
设置为.done
回调,因为现在this
指的是$.ajax
对象没有Demo
,您可以使用.bind
方法来执行此操作。this.props.data
更改为this.state.data
,因为位于州对象中的数据不在道具records
属性中的数据的data
var Demo = React.createClass({
getInitialState:function() {
return {
data :[]
};
},
componentDidMount: function () {
$.ajax({
url: "http://www.w3schools.com/angular/customers.php",
dataType: 'json'
}).done(function(response) {
this.setState({ data: response.records });
}.bind(this));
},
render: function() {
var customers = this.state.data.map(function(el,i) {
return <div key={i}>
<div>{el.Name}</div>
<div>{el.City}</div>
<div>{el.Country}</div>
</div>
});
return <div>{ customers }</div>;
}
});