【发布时间】:2021-11-27 19:03:10
【问题描述】:
我有一些应用程序有一些包含多个页面的代码。在一页上,我想要一个three 画布。
我有一些这样的代码。
export const MyScreen = ({navigation}) => {
return (
<View>
<SomeHeader navigator={navigation}/>
<View style={styles.canvas}>
<MyCanvas/>
</View>
</View>
);
那我也有这段代码。
export class MyCanvas extends React.Component {
render() {
// This reference will give us direct access to the mesh
const mesh = useRef()
// Set up state for the hovered and active state
const [hovered, setHover] = useState(false)
const [active, setActive] = useState(false)
// Rotate mesh every frame, this is outside of React without overhead
useFrame(() => (mesh.current.rotation.x += 0.01))
return (
<Canvas>
<mesh
{...props}
ref={mesh}
scale={active ? 1.5 : 1}
onClick={(event) => setActive(!active)}
onPointerOver={(event) => setHover(true)}
onPointerOut={(event) => setHover(false)}>
<boxGeometry args={[1, 2, 3]} />
<meshStandardMaterial color={hovered ? 'hotpink' : 'orange'} />
</mesh>
</Canvas>
);
}
}
导致此错误
未捕获的错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用。这可能是由于以下原因之一:
钩子不是在函数组件的主体中吗?我很困惑。
【问题讨论】:
标签: reactjs react-native three.js