将JSON数组设置为状态,不会显示propper javascript对象
我正在react中尝试获取API,从我自己创建的服务器获取一些虚拟数据 在我的componentDidMount生命周期钩子中,我遇到了一个对服务器的获取调用将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 }, ()=&
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]
是对象的字符串表示形式