【发布时间】:2017-02-13 21:20:30
【问题描述】:
我有下面的反应代码,当变量日志是字符串时它可以正常工作,即注释代码,但是一旦我用数组替换日志,我就会收到错误,
import React from "react";
export default class WelcomeComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
// logs :''
logs: []
};
}
componentDidMount() {
var socket = io('http://localhost:11001');
socket.on('news', (data) => {
data = JSON.parse(data);
this.setState({
logs: this.state.logs.push(data)
// logs: data + this.state.logs
});
});
}
render() {
return (<div> {this.state.logs}</div>);
}
}
将日志作为数组会给出以下错误,
未捕获的类型错误:_this2.state.logs.push 不是函数(…)
谁能帮忙。
【问题讨论】:
-
如果您在
componentDidMount中执行console.log(this.state.logs),它会返回什么? -
它显示为 1,但不知道为什么
-
您将日志设置为
.push()的结果,这将是数组的长度,因此它被设置为一个数字。下次您尝试更新状态时,您将调用push以获取数字和错误。
标签: javascript arrays reactjs react-redux