Reactjs ajax 内 setState 问题

2016-05-14 13:21:13 +08:00
 frontman

import $ from 'webpack-zepto'; import React from 'react';

var Kem = React.createClass({ render(){

     var dataget = JSON.parse(this.props.data);
     //报错 VM233577:1 Uncaught SyntaxError: Unexpected end of input
  
    return (<ul>{ dataget }</ul>)
}

})

var Home = React.createClass({ getDefaultProps(){ return {url:"getApi"} }, getData(){ $.ajax({ url: this.props.url, dataType: 'json', type: 'GET', success: function(data) { var datastring = JSON.stringify(data); var dataobj = JSON.parse(datastring); console.log(dataobj);//可获取 this.setState({data: JSON.stringify(data) });

	      }.bind(this)
    	});
  
},
 getInitialState:function(){

  return {data:[]}
}, 
componentDidMount: function() {
	this.getData();
 },
render(){ 
	 
		    return (
		    <div>
				<Kem   data = {this.state.data}/>
			</div>)

	
}

})

export default Home

通过 ajax 获取的一个对象传给 state 的 data 先转成 string 再转成对象,可是转的时候报错。

1896 次点击
所在节点    问与答
3 条回复
bdbai
2016-05-14 13:43:57 +08:00
不要把 json 字符串传给 state ,传对象。
frontman
2016-05-14 14:09:41 +08:00
@bdbai 那怎么得到数据呀
bdbai
2016-05-14 16:17:32 +08:00
就是在 success 回调函数里面 this.setState({ data: data }); 没必要再转了。 Kem 组件直接读 props 就可以,不用另外 Parse 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278599

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX