Reactjs 帧取消注册组件
我正在学习如何使用react和redux构建框架。我正在创建自定义组件并在我的reactjs componentWillMount生命周期事件中注册它们。例如:我正在将光线投射的结果发送到父react组件,以便保存下来用于其他目的。这很有效Reactjs 帧取消注册组件,reactjs,aframe,Reactjs,Aframe,我正在学习如何使用react和redux构建框架。我正在创建自定义组件并在我的reactjs componentWillMount生命周期事件中注册它们。例如:我正在将光线投射的结果发送到父react组件,以便保存下来用于其他目的。这很有效 import React,{Component,PropTypes}来自“React” 导出默认类AframeComponent扩展组件{ 静态类型={ cb:PropTypes.func.isRequired } 组件将安装(){ 常量{AFRAME}=
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、事件)中应执行的操作和反应级别(视图层、数据绑定)中应执行的操作非常重要。感谢您的快速回复!我将致力于这些变化。