在react-three-fiber中使用useFrame与外部数据一起使用的最佳方法

时间:2020-09-01 12:22:13

标签: javascript reactjs react-three-fiber

我有一个名为Sticky的组件,该组件包装了我的react-three-fiber组件。该组件通过回调为我提供了一些状态更新,因此整个代码如下:

const Box = props => {
  
  useFrame(() => {
    // I need the Sticky state update here!
  });

  return (
    <mesh {...props}>
      <boxBufferGeometry attach="geometry" args={[1, 1, 1]} />
      <meshStandardMaterial
        attach="material"
        color={"orange"}
      />
    </mesh>
  );
};

const Main = () => {
  const onChange = state => {
    console.log('NEW STATE', state);
  };

  return (
    <Sticky onChange={onChange}
        <Canvas>
          <Box position={[-1.2, 0, 0]} />
        </Canvas>
    </Sticky>
  );
};

如您所见,我需要Sticky onChange挂钩中来自react-three-fiber useFrame回调的数据。我了解一切工作原理,并且我不想将其传递到组件中,因为这将重新渲染Three.js草图。但是,如果我不能依靠道具,那么如何使用react-three-fiber组件中的外部数据?

任何帮助表示赞赏。

0 个答案:

没有答案