我在一个函数中有这个代码
function Lobby () {
但我想将它传递给class Lobby extends Component {
,以获得
render () {
return (
但是把这些const和useEffect等..给了我一个错误,有没有办法把它“翻译”成一个组件?
我感谢那些能帮助我的人
原始代码:
function Lobby () {
const [message, updateMessage] = useState('')
const [messages, updateMessages] = useState([])
useEffect(() => {
const handleNewMessage = newMessage =>
updateMessages([...messages, newMessage])
socket.on('chat.message', handleNewMessage)
return () => socket.off('chat.message', handleNewMessage)
}, [messages])
const handleFormSubmit = event => {
event.preventDefault()
if (message.trim()) {
socket.emit('chat.message', {
userid: myId,
lobby,
username: username,
message
})
updateMessage('')
const recibesound = document.getElementsByClassName("audio-element")[0]
recibesound.play()
}
}
const handleInputChange = event =>
updateMessage(event.target.value)
////teste
const handleTesteChange = event =>
updateMessage(event.target.value)
const handleTesteSubmit = event => {
event.preventDefault()
if (message.trim()) {
socket.emit('chat.message', {
userid: myId,
message
})
updateMessage('')
}
}
///teste
return( <div>
//html
</div>
)}
export default Lobby;
目标:
class Lobby extends Component {
// same code
render() {
return(
<div>
//html
</div>
);
}
}
1条答案
按热度按时间jdzmm42g1#
据我所知,您正在尝试将hooks函数组件转换为类组件。您不能在类组件中使用任何hooks函数。您必须使用
this.setState()
而不是useState hook来重写类组件(代替updateMessage,而updateMessages)和this.state.message
代替'消息',并且使用componentDidUpdate
方法而不是useEffect挂钩。对于函数(handleInputChange),可以将它们定义为类的方法。对于常量(recibesound),可以在类之外定义它。简而言之,你必须重写你的组件。我建议你查看一个关于类组件的React教程。