2017-08-11 41 views
0

我写了下面的代码里面使用getInitialState爱可信:阵营:axios.get和承诺

var Player = createReactClass({ 
    readDataFromServer: function() { 
     return axios.get("**** url address ****") 
     .then(res => {    
      return {name: res[name]} 
     }); 
    }, 
    render: function() { 
     return this.readDataFromServer().then((res) => { 
     return (<input value={res.name} type="text"/>) 
     } 
    } 
} 

我期望我会得到一个与输入文本中。 “渲染”函数返回一个只在承诺解决,然后返回 但是,尽管如此,我只是得到一个错误说:

Player.render():有效的做出反应元素(或空)必须退回。您可能返回了未定义的数组或其他无效对象。

顺便说一句,如果我改变readDataFromServer功能:

我与文“约翰”内的输入框。

回答

1

您可能必须对这些异步axios调用使用react-redux。当你启动应用程序时,你的getInitialState函数没有返回值,所以当它首次呈现给DOM时,它有一个空值。如果您要console.log返回的值,您可能会在控制台中看到它,但是,由于第一次渲染时该值为null,因此不会显示返回的值。看看反应,终极版,它管理您的数据存储,一旦你从Axios公司调用的返回值,更新了Redux值,并在

render: function() { return (<input value={this.redux.name} type="text"/>) }

呼叫呈现了Redux值来代替,这将一旦从服务器接收到响应,就自动更新DOM。

请随时查看React和Express应用程序的样板:https://github.com/rjzheng/REWBoilerplate.git。查看/ app文件夹并查看如何设置缩减器。

+1

感谢您的回答,但我编辑了它。 – CrazySynthax