Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON数组设置为状态,不会显示propper javascript对象_Javascript_Reactjs - Fatal编程技术网

将JSON数组设置为状态,不会显示propper javascript对象

将JSON数组设置为状态,不会显示propper javascript对象,javascript,reactjs,Javascript,Reactjs,我正在react中尝试获取API,从我自己创建的服务器获取一些虚拟数据 在我的componentDidMount生命周期钩子中,我遇到了一个对服务器的获取调用 componentDidMount(){ axios.get('http://localhost:8080/api/data/50/1') .then(res =>{ console.log(res.data) this.setState({ names: res.data }, ()=&

我正在react中尝试获取API,从我自己创建的服务器获取一些虚拟数据

在我的componentDidMount生命周期钩子中,我遇到了一个对服务器的获取调用

componentDidMount(){
  axios.get('http://localhost:8080/api/data/50/1')
  .then(res =>{
    console.log(res.data)
    this.setState({
      names: res.data
    }, ()=>{
      console.log(this.state.names)
    })

  })
console.log(this.state.names)
}
因此,在这里,每当我将回调传递到setState时,我都会正确地记录json对象数组,这是需要的

但是,在我的渲染方法中:

render() {
console.log("state is" + this.state.names)
它在第一次渲染时不记录任何内容(我想这是因为setState是异步工作的,但第二次它只是记录

state is[object Object],[object Object],[object Object],`[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]`
为什么在render方法中记录状态时不显示正确的数组,但在将回调传递到setState方法时却正确显示

我认为应该是:

console.log("State is: ", this.state.names)
而不是

console.log("State is: " + this.state.names)

您的代码中第一个console.log的输出是什么?我按显示顺序添加了一个日志图像,我在它前面添加了一个字符串,以查看日志的位置。可以尝试
res.data.json()
,或
json.stringify(res.data)
?如果无法运行代码,则很难进行故障排除。请求是异步的,因此您需要在
render()
中设置一个条件,以说明开始时不存在该数据。
render()
不会等待该请求,这是因为
String+Array
将数组强制转换为String和
[object object]
是对象的字符串表示形式