pmndrs / valtio

🧙 Valtio makes proxy-state simple for React and Vanilla
https://valtio.dev
MIT License
9.02k stars 251 forks source link

fix(utils): useProxy to avoid re-renders when no props are touched #809

Closed dai-shi closed 10 months ago

dai-shi commented 11 months ago

Related Issues or Discussions

Fixes https://github.com/pmndrs/valtio/discussions/808#discussioncomment-7476506

Summary

Touch a dummy prop so that it avoids re-renders if no other props are touched. I'm not sure if we should add this hack, or just add a caveat note in docs.

Check List

vercel[bot] commented 11 months ago

The latest updates on your projects. Learn more about Vercel for Git ↗ī¸Ž

Name Status Preview Comments Updated (UTC)
valtio ✅ Ready (Inspect) Visit Preview đŸ’Ŧ Add feedback Nov 5, 2023 9:51am
codesandbox-ci[bot] commented 11 months ago

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Latest deployment of this branch, based on commit e4c83240398f59a5ad435cc3bc650c575040df22:

Sandbox Source
React Configuration
React TypeScript Configuration
React Browserify Configuration
React Snowpack Configuration
React Parcel Configuration
github-actions[bot] commented 11 months ago

Size Change: +163 B (0%)

Total Size: 51.4 kB

Filename Size Change
dist/esm/react/utils.js 258 B +33 B (+15%) ⚠ī¸
dist/react/utils.js 277 B +33 B (+14%) ⚠ī¸
dist/system/react/utils.development.js 356 B +35 B (+11%) ⚠ī¸
dist/system/react/utils.production.js 237 B +14 B (+6%) 🔍
dist/umd/react/utils.development.js 433 B +33 B (+8%) 🔍
dist/umd/react/utils.production.js 314 B +15 B (+5%) 🔍
ℹī¸ View Unchanged | Filename | Size | | :--- | :---: | | `dist/esm/index.js` | 62 B | | `dist/esm/macro.js` | 698 B | | `dist/esm/macro/vite.js` | 864 B | | `dist/esm/react.js` | 732 B | | `dist/esm/utils.js` | 68 B | | `dist/esm/vanilla.js` | 2.44 kB | | `dist/esm/vanilla/utils.js` | 3.07 kB | | `dist/index.js` | 243 B | | `dist/macro.js` | 919 B | | `dist/macro/vite.js` | 1.08 kB | | `dist/react.js` | 668 B | | `dist/system/index.development.js` | 236 B | | `dist/system/index.production.js` | 170 B | | `dist/system/macro.development.js` | 779 B | | `dist/system/macro.production.js` | 556 B | | `dist/system/macro/vite.development.js` | 951 B | | `dist/system/macro/vite.production.js` | 660 B | | `dist/system/react.development.js` | 871 B | | `dist/system/react.production.js` | 471 B | | `dist/system/utils.development.js` | 241 B | | `dist/system/utils.production.js` | 176 B | | `dist/system/vanilla.development.js` | 2.58 kB | | `dist/system/vanilla.production.js` | 1.52 kB | | `dist/system/vanilla/utils.development.js` | 3.28 kB | | `dist/system/vanilla/utils.production.js` | 2.19 kB | | `dist/umd/index.development.js` | 382 B | | `dist/umd/index.production.js` | 330 B | | `dist/umd/macro.development.js` | 1.03 kB | | `dist/umd/macro.production.js` | 721 B | | `dist/umd/macro/vite.development.js` | 1.23 kB | | `dist/umd/macro/vite.production.js` | 879 B | | `dist/umd/react.development.js` | 814 B | | `dist/umd/react.production.js` | 526 B | | `dist/umd/utils.development.js` | 398 B | | `dist/umd/utils.production.js` | 344 B | | `dist/umd/vanilla.development.js` | 2.76 kB | | `dist/umd/vanilla.production.js` | 1.64 kB | | `dist/umd/vanilla/utils.development.js` | 3.86 kB | | `dist/umd/vanilla/utils.production.js` | 2.46 kB | | `dist/utils.js` | 247 B | | `dist/vanilla.js` | 2.63 kB | | `dist/vanilla/utils.js` | 3.71 kB |

compressed-size-action

dai-shi commented 10 months ago

I think this change is probably reasonable, because useProxy only takes care of top level property access.