22 lines
760 B
JavaScript
22 lines
760 B
JavaScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import shallowEqual from 'shallow-equals';
|
|
|
|
// Returns a function that will construct a memoized array of its arguments for use as
|
|
// the extraData prop for a ListView so that its rows can be re-rendered even if the items
|
|
// themselves don't change.
|
|
export function makeExtraData() {
|
|
let lastArgs = [];
|
|
|
|
// Returns an array containing the arguments provided to this function.
|
|
// If this function is called twice in a row with the same arguments,
|
|
// it will return the exact same array.
|
|
return (...args) => {
|
|
if (!shallowEqual(lastArgs, args)) {
|
|
lastArgs = args;
|
|
}
|
|
|
|
return lastArgs;
|
|
};
|
|
}
|