Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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
Reactjs 帧取消注册组件_Reactjs_Aframe - Fatal编程技术网

Reactjs 帧取消注册组件

Reactjs 帧取消注册组件,reactjs,aframe,Reactjs,Aframe,我正在学习如何使用react和redux构建框架。我正在创建自定义组件并在我的reactjs componentWillMount生命周期事件中注册它们。例如:我正在将光线投射的结果发送到父react组件,以便保存下来用于其他目的。这很有效 import React,{Component,PropTypes}来自“React” 导出默认类AframeComponent扩展组件{ 静态类型={ cb:PropTypes.func.isRequired } 组件将安装(){ 常量{AFRAME}=

我正在学习如何使用react和redux构建框架。我正在创建自定义组件并在我的reactjs componentWillMount生命周期事件中注册它们。例如:我正在将光线投射的结果发送到父react组件,以便保存下来用于其他目的。这很有效

import React,{Component,PropTypes}来自“React”
导出默认类AframeComponent扩展组件{
静态类型={
cb:PropTypes.func.isRequired
}
组件将安装(){
常量{AFRAME}=window
const aframeComponent=this
如果(!AFRAME)返回
如果(!AFRAME.components['sphere-listener']){
AFRAME.registerComponent('sphere-listener'{
init(){
const{el}=这个
el.addEventListener('mouseup',(evt)=>{
const camera=document.querySelector(“#camera”)
aframeComponent.handleRaycast(evt.detail.intersection.point、camera.components.rotation)
})
}
})
}
}
手持式驾驶(位置、旋转){
const{cb}=this.props
/*用位置和旋转来做一些很酷的事情*/
this.setState({position,rotation},()=>{
cb(位置、旋转)
})
}
渲染(){
返回(
{/*这里发生了很酷的事情*/}
)
}

}
组件应该在全局级别注册,而不是在运行时注册。您不应该像注册DOM元素那样注册和注销组件,因为这并没有多大好处。但是如果必须:
删除frame.components['sphere-listener']
编辑:我确实看到您试图将React变量封闭到组件中。注册/取消注册有点有效,但我建议将它们分离

如果需要将数据传递到组件中,可以使用
模式
,并通过模式绑定数据(例如,
somecomponent={{{foo:this.state.blah}

你不能传递函数。您应该使用事件侦听器进行通信
{}>
,并且可以在A帧级别发出事件


区分A-Frame组件(3D、VR、事件)中应执行的操作和反应级别(视图层、数据绑定)中应执行的操作非常重要。

感谢您的快速回复!我将致力于这些变化。