Comments (2)
I did a lot of profiling and debugging. One of the main reason for slowness is that every time an event is dispatched, ALL rows and cells are being rendered. This is because this.props !== props
is always true. I tried some things and my conclusion is, that functions are causing the equal (and deep-equal
and shallowEqual
) checks to fail.
This prohibits rendering but also prohibits propagation of children, which prohibits updates in total (i think):
import deepEqual from 'deep-equal'
var diff = require('deep-diff').diff
export const shouldPureComponentUpdate = function (nextProps) {
// if (Math.random() > 0.98 && nextProps.cells) {
// console.log(nextProps, this.props, 'deepEqual', deepEqual(nextProps, this.props))
// }
const nextKeys = Object.keys(nextProps)
const lastKeys = Object.keys(this.props)
const next = nextKeys.filter((k) => typeof nextProps[k] !== 'function')
const last = lastKeys.filter((k) => typeof nextProps[k] !== 'function')
if (!deepEqual(next, last)) {
return false
}
// eslint-disable-next-line no-invalid-this
return next.filter((k) => nextProps[k] !== this.props[k]).length > 0
}
from react-page.
import deepEqual from 'deep-equal'
export const shouldPureComponentUpdate = function (nextProps) {
// eslint-disable-next-line no-invalid-this
const lastKeys = Object.keys(this.props)
const nextKeys = Object.keys(nextProps)
if (!deepEqual(lastKeys, nextKeys)) {
return false
}
const next = nextKeys.filter((k) => typeof nextProps[k] !== 'function')
// eslint-disable-next-line no-invalid-this
const changed = next.filter((k) => !deepEqual(nextProps[k], this.props[k])).length
return changed > 0
}
causes some updates to be skipped and some to be propagated. it's however quite buggy and doesn't really increase the speed
from react-page.
Related Issues (20)
- Does not work with vite HOT 5
- ReferenceError: global is not defined HOT 1
- Is there a similar layer function module? HOT 2
- React-page does not work with vite HOT 29
- SlateContext not found in Component on initial render HOT 9
- OnChange no longer assigns to existing data HOT 4
- form inputs don't work with react-strict-mode HOT 1
- Uncaught RangeError: Maximum call stack size exceeded HOT 3
- Sync Now pending display status HOT 1
- Test "returns a referentially stable callback" fails HOT 1
- react-admin input is not compatible with react-admin 4 HOT 6
- Sourcemaps missing in published package HOT 3
- docs: add a Vite example HOT 1
- Insert Before / After Feature HOT 1
- Incompatible with React 18 due to failure in react-dnd import HOT 4
- page-editor/plugins-image - Returned Link not being set in field
- Move all nested plugins along with the parent plugin
- Dependency Conflict with @react-page/react-admin and react-admin HOT 2
- replace react-dnd with something else HOT 2
- Add Tree Layer
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-page.