Get key from item (not props), do not update state if there is no change
parent
4f72118fe8
commit
57cd762262
|
@ -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);
|
||||
}
|
||||
for (let k in newState)
|
||||
{
|
||||
if (instance.state[k] !== newState[k])
|
||||
{
|
||||
instance.state = { ...instance.state, ...newState };
|
||||
options.shouldUpdate = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (callback)
|
||||
{
|
||||
callback();
|
||||
|
|
Loading…
Reference in New Issue