pmndrs / use-cannon

👋💣 physics based hooks for @react-three/fiber
https://cannon.pmnd.rs
2.76k stars 155 forks source link

Remove internal suspense boundary #298

Open alexandernanberg opened 2 years ago

alexandernanberg commented 2 years ago

I can't see a good reason why there is a suspense boundary inside the library, this should ideally be handled by consumers for more granular control. E.g. consumer might not want to render null.

https://github.com/pmndrs/use-cannon/blob/543f3e243947ff68488f549208417289cde60fdd/src/index.tsx#L8-L14

This would unfortunately be a breaking change, but in the long run I think it's a good one.

bjornstar commented 2 years ago

Would it be useful to provide a fallback property to the props?

alexandernanberg commented 2 years ago

Not really for my use-case tbh, because it doesn't enable composability in the same way.

E.g. imagine this scenario

<Canvas>
    <Suspense fallback={<Loading />}>
        <ComponentThatLoadsAsset />
        <Physics>
            <ComponentThatLoadsAsset />
        </Physics>
    </Suspense>
</Canvas>
drcmda commented 2 years ago

i agree, it would be more flexible if it's in userland. it is a breaking change though, would require a new major.

btw @alexandernanberg your example wouldn't work, you can't have raw text or dom nodes within the canvas, but this would be ok:

<Suspense fallback="Loading...">
  <Canvas>  
    <ComponentThatLoadsAsset />
    <Physics>
      <ComponentThatLoadsAsset />
    </Physics>
  </Canvas>
</Suspense>
alexandernanberg commented 2 years ago

@drcmda Oh right, good point, was just quickly typing out pseudo-code 😄