Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Socket.io重置反应状态?_Javascript_Reactjs_Socket.io - Fatal编程技术网

Javascript Socket.io重置反应状态?

Javascript Socket.io重置反应状态?,javascript,reactjs,socket.io,Javascript,Reactjs,Socket.io,在使用React和Socket.io时,我遇到了一个奇怪的问题。感谢任何能够提供帮助的人 目标: -->1. socket.io发出一个事件,用按钮列表对前端作出反应 -->2. react呈现按钮列表 -->3. 用户单击按钮 -->4. 按钮上的文本作为消息发送 -->5. 将状态从{hidden:false}设置为{hidden:true} -->6. 按钮被隐藏,所以用户无法返回并单击它们 代码: import React,{Component}来自'React'; 从“uuid”导入

在使用React和Socket.io时,我遇到了一个奇怪的问题。感谢任何能够提供帮助的人

目标:
-->1. socket.io发出一个事件,用按钮列表对前端作出反应
-->2. react呈现按钮列表
-->3. 用户单击按钮
-->4. 按钮上的文本作为消息发送
-->5. 将状态从{hidden:false}设置为{hidden:true}
-->6. 按钮被隐藏,所以用户无法返回并单击它们

代码:

import React,{Component}来自'React';
从“uuid”导入uuidv4;
类按钮消息扩展组件{
建造师(道具){
超级(道具);
此.state={
隐藏:假
};
}
把手按钮点击=(事件)=>{
this.setState({hidden:true});
this.props.socket.emit('newMessage',event.target.textContent,this.props.user);
};
render(){
const buttons=this.props.buttons;
返回(
  • {!这个。状态。隐藏&& { 按钮。地图((按钮)=>{ 返回( {button.buttonText} ); }) } }
  • ); } }
    导出默认按钮消息结果表明,我使用uuidv4()为呈现该组件的组件生成了一个唯一键

    。。。
    返回(
    {message.buttons&&}
    )
    
    您发布的代码看起来不错。你能展示呈现这个的组件吗?也许是因为某种原因,它被安装/卸载了?你有更高层次的套接字监听器吗?我能想象的唯一场景是完全重新安装组件。尝试将日志项添加到
    onComponentWillUnmount
    Oh。有什么错误吗?也许
    socket.emit
    会抛出一个错误来停止JS执行?@azium是的,这就是问题所在!我正在使用uuidv4()为呈现此项的组件生成唯一键。进行了一些挖掘,发现每次组件渲染时都会重新生成密钥,这将导致重新安装子组件。谢谢你给我指明了正确的方向@乔纳斯。是的,这就是问题所在!请看下面我自己的答案。谢谢你给我指明了正确的方向!