0
我試圖讓這個工作,但是socket.on只能在componentDidMount函數內部工作,但我需要在點擊時調用它..這是我得到了什麼..Socket.on在cmpDidMount中工作,但不是與ReactJS的特定功能
///Server.js
const express = require('express');
const app = express();
const webpack = require('webpack');
const webpackMiddleware = require('webpack-dev-middleware');
const config = require('./webpack.config.js');
const compiler = webpack(config);
const server = require('http').Server(app);
const io = require('socket.io')(server);
app.use(webpackMiddleware(compiler, {publicPath:config.output.publicPath}))
app.use(express.static(__dirname + '/src'))
io.on('connection', socket => {
io.emit('create', socket.id)
})
server.listen(3000,() => console.log('server is up!'))
////Create.js
import React from 'react'
import io from 'socket.io-client'
const socket = io()
class Create extends React.Component {
constructor(props) {
super(props);
this.state={rooms: []}
this.add = this.add.bind(this)
}
add() {
socket.on('create', id => {
this.setState({rooms: [id, ...this.state.rooms]})
console.log(this.state.rooms);
})
}
render() {
return (<div>
<button className = 'btn btn-primary create' onClick={this.add}>Create Room </button>
</div>);
}
}
export default Create;
的add()函數內的socket.on,什麼也不做,但是當我把它放在componentDidMount裏面的時候,但並不像我想要的那樣... Ty!