V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
frontman
V2EX  ›  问与答

Reactjs ajax 内 setState 问题

  •  
  •   frontman · 2016-05-14 13:21:13 +08:00 · 1794 次点击
    这是一个创建于 2926 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 再转成对象,可是转的时候报错。

    3 条回复    2016-05-14 16:17:32 +08:00
    bdbai
        1
    bdbai  
       2016-05-14 13:43:57 +08:00 via Android
    不要把 json 字符串传给 state ,传对象。
    frontman
        2
    frontman  
    OP
       2016-05-14 14:09:41 +08:00
    @bdbai 那怎么得到数据呀
    bdbai
        3
    bdbai  
       2016-05-14 16:17:32 +08:00 via Android
    就是在 success 回调函数里面 this.setState({ data: data }); 没必要再转了。 Kem 组件直接读 props 就可以,不用另外 Parse 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1029 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 19:15 · PVG 03:15 · LAX 12:15 · JFK 15:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.