frontman
V2EX  ›  问与答

Reactjs ajax 内 setState 问题

  •  
  •   frontman · May 14, 2016 · 2393 views
    This topic created in 3679 days ago, the information mentioned may be changed or developed.

    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 replies    2016-05-14 16:17:32 +08:00
    bdbai
        1
    bdbai  
       May 14, 2016 via Android
    不要把 json 字符串传给 state ,传对象。
    frontman
        2
    frontman  
    OP
       May 14, 2016
    @bdbai 那怎么得到数据呀
    bdbai
        3
    bdbai  
       May 14, 2016 via Android
    就是在 success 回调函数里面 this.setState({ data: data }); 没必要再转了。 Kem 组件直接读 props 就可以,不用另外 Parse 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4605 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 09:55 · PVG 17:55 · LAX 02:55 · JFK 05:55
    ♥ Do have faith in what you're doing.