#javascript #reactjs
#javascript #reactjs
Вопрос:
Я хочу вызвать метод в блоке подписки, но я получил «Не удается прочитать свойство’showMessageFromSocket’ неопределенного». Как я могу вызвать метод showMessageFromSocket? В angular это было возможно.
export default class ConnectedChatroom extends Component<
ConnectedChatroomProps,
ConnectedChatroomState
> {
wsObj: CompatClient;
constructor(props: Props, context: *) {
super(props, context);
this.configureSocketChannel('dassfa')
}
showMessageFromSocket(message) {
console.log(message);
//do something
}
configureSocketChannel(senderId: string) {
let ws = Stomp.client("ws://localhost:8080/chat");
ws.connect({}, function (frame) {
ws.subscribe("/topic/messages", function (message) {
this.showMessageFromSocket(message);
});
}, function (error) {
console.log("STOMP error " error);
});
this.wsObj = ws;
}
Ответ №1:
Используйте arrow
функцию для доступа к членам класса, таким как переменная или метод класса, без собственной переменной.
Попробуйте, как показано ниже
configureSocketChannel(senderId: string) {
let ws = Stomp.client("ws://localhost:8080/chat");
ws.connect({}, (frame) => {
ws.subscribe("/topic/messages", (message) => {
this.showMessageFromSocket(message);
});
}, function (error) {
console.log("STOMP error " error);
});
this.wsObj = ws;
}