Browse Source

Get key from item (not props), do not update state if there is no change

master
Vitaliy Filippov 11 months ago
parent
commit
57cd762262
  1. 15
      virtualRender.js

15
virtualRender.js

@ -2,7 +2,7 @@
// Simpler alternative to react-test-renderer, also allows to visit element tree during rendering
//
// (c) Vitaliy Filippov 2021+
// Version: 2021-09-20
// Version: 2021-09-21
// License: Dual-license MPL 1.1+ or GNU LGPL 3.0+
// Credits to react-apollo/getDataFromTree.ts and react-tree-walker
@ -92,7 +92,7 @@ function walkTree(tree, visitor, context, options, path = '')
for (let item of tree)
{
let type = item && getType(item);
let key = item && getProps(item)?.key;
let key = item && item.key;
if (lastType == type && lastHasKey == (key != null))
index++;
else
@ -197,8 +197,15 @@ function walkTree(tree, visitor, context, options, path = '')
// eslint-disable-next-line no-param-reassign
newState = newState(instance.state, instance.props, instance.context);
}
instance.state = { ...instance.state, ...newState };
options.shouldUpdate = true;
for (let k in newState)
{
if (instance.state[k] !== newState[k])
{
instance.state = { ...instance.state, ...newState };
options.shouldUpdate = true;
break;
}
}
if (callback)
{
callback();

Loading…
Cancel
Save