-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Inspector v2: Rework BoundProperty to have no conditional hooks #17041
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Inspector v2: Rework BoundProperty to have no conditional hooks #17041
Conversation
Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s). |
Snapshot stored with reference name: Test environment: To test a playground add it to the URL, for example: https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/refs/pull/17041/merge/index.html#WGZLGJ#4600 Links to test babylon tools with this snapshot: https://playground.babylonjs.com/?snapshot=refs/pull/17041/merge To test the snapshot in the playground with a playground ID add it after the snapshot query string: https://playground.babylonjs.com/?snapshot=refs/pull/17041/merge#BCU1XR#0 |
You have changed file(s) that made possible changes to the sandbox. https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/SANDBOX/refs/pull/17041/merge/ |
Building or testing the playground has failed. If the tests failed, results can be found here: |
packages/dev/inspector-v2/src/components/properties/boundProperty.tsx
Outdated
Show resolved
Hide resolved
Visualization tests for WebGPU |
WebGL2 visualization test reporter: |
…property-no-conditional-hooks
packages/dev/inspector-v2/src/components/properties/boundProperty.tsx
Outdated
Show resolved
Hide resolved
Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s). |
Snapshot stored with reference name: Test environment: To test a playground add it to the URL, for example: https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/refs/pull/17041/merge/index.html#WGZLGJ#4600 Links to test babylon tools with this snapshot: https://playground.babylonjs.com/?snapshot=refs/pull/17041/merge To test the snapshot in the playground with a playground ID add it after the snapshot query string: https://playground.babylonjs.com/?snapshot=refs/pull/17041/merge#BCU1XR#0 |
You have made possible changes to the playground. https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/PLAYGROUND/refs/pull/17041/merge/ The snapshot playground with the CDN snapshot (only when available): Note that neither Babylon scenes nor textures are uploaded to the snapshot directory, so some playgrounds won't work correctly. |
WebGL2 visualization test reporter: |
Visualization tests for WebGPU |
You have changed file(s) that made possible changes to the sandbox. https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/SANDBOX/refs/pull/17041/merge/ |
This changes BoundProperty to remove the conditional hooks (see https://react.dev/reference/rules/rules-of-hooks). The strategy here is to first do a useProperty in the "outer" component so we can observe the value of that property to determine if we really ideally should be using a more specific property hook that watches nested properties like x/y/z of a Vector3 for example. The desired hook is then used as the dependency for a useMemo that creates and returns an "inner" component that uses the desired hook. This eliminates conditional hooks.