【发布时间】:2018-08-16 02:31:08
【问题描述】:
我有一个 JSON 文件,其结构类似于“data.json”
{
"Object1": {
"name": "1",
"rank": "2"
},
"Object2": {
"name": "3",
"rank": "4"
}
}
在我的 React 代码中,我有我的数据来设置我的反应状态。我想将 Object2 传递给不同的组件,但我似乎无法区分数据。
// import packages
import React, { Component } from "react";
import io from 'socket.io-client';
class App extends Component {
constructor() {
super();
this.state = {
data: null
};
this.socket = io('http://localhost:5000');
// Binders
this.updateState = this.updateState.bind(this);
}
componentDidMount() {
this.socket.on('send data', this.updateState);
}
updateState(result) {
this.setState({
data: result
});
}
render() {
return (
<p style={{ textAlign: "center" }}>
{this.state.data}
</p>
);
}
}
export default App;
当我尝试引用 this.state.data 或 this.state.data.Object1.name 之类的内容时,它指向一个空对象。我究竟做错了什么?
【问题讨论】:
-
在您的
render方法中将console.log(this.state)放在return之前。你在第二个渲染中看到了什么?此外,您不能直接将对象渲染到 DOM 中。这不起作用:{this.state.data}. -
@devserkan 我在空白主页和控制台中看到了数据。为什么 this.state.data 不起作用?它有效,但不是我试图让它工作的方式。我将所有内容都通过套接字进行管道传输,以便一次完全更新应用程序。
-
是不是因为不是
Object1而是Object11? -
@azium 这只是一个错字。这并没有什么不同。 gyazo.com/150dd6bd270513982357022d7dc73570
-
哦,您的屏幕截图中的错误与您所说的不同。不是说
Object1为空,而是说data为空。 @devserkan 答案是正确的