我有 2 个文件 Server.js 和 Servicedesk.js,我使用 socket.io 和 ReactJS。 我想比较来自 Server.js(我的 socket.io 文件)的数组和来自 Servicedesk.js 的数组。在 Servicedesk.js 中,我有以下代码:
class Servicedesk extends React.Component {
constructor(props) {
super(props);
this.state = {
messages: [],
};
socket.on('updateRooms', function(combMessages) {
console.log(combMessages.length);
console.log(this.state.messages.length);
let intersection = combMessages.filter(x => this.state.messages.includes(x));
console.log(intersection);
});
}
}
在 Server.js 中:
let combMessages = [];
我正在将 combMessages 传递给 Servicedesk.js,但我如何比较两者?因为我不能做这样的事情:
let intersection = combMessages.filter(x => this.state.messages.includes(x));
因为我收到这个错误:
TypeError: undefined is not an object (evaluating 'this.state.messages')
最佳答案
在 socket.on()
中,您的
function(combMessages) {
console.log(combMessages.length);
console.log(this.state.messages.length);
let intersection = combMessages.filter(x => this.state.messages.includes(x));
console.log(intersection);
看不到组件的上下文。所以,你应该使用arrow function
(See the docs) ,这会将上下文绑定(bind)到您的函数,如下所示:
socket.on('updateRooms',(combMessages) => {
console.log(combMessages.length);
console.log(this.state.messages.length);
let intersection = combMessages.filter(x => this.state.messages.includes(x));
console.log(intersection);
})
关于javascript - 读取状态数组 ReactJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50331730/