朱桂飞
2024-08-01 6959c1d4ee2244691603ab1f471b750ac517725d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import {
    paramsList
} from './params-list.js';
import {
    isObject
} from './utils.js';
 
function getChangedParams(swiperParams, oldParams, children, oldChildren) {
    const keys = [];
    if (!oldParams) return keys;
    const addKey = (key) => {
        if (keys.indexOf(key) < 0) keys.push(key);
    };
    const oldChildrenKeys = oldChildren.map((child) => child.props && child.props.key);
    const childrenKeys = children.map((child) => child.props && child.props.key);
    if (oldChildrenKeys.join('') !== childrenKeys.join('')) keys.push('children');
    if (oldChildren.length !== children.length) keys.push('children');
    const watchParams = paramsList.filter((key) => key[0] === '_').map((key) => key.replace(/_/, ''));
    watchParams.forEach((key) => {
        if (key in swiperParams && key in oldParams) {
            if (isObject(swiperParams[key]) && isObject(oldParams[key])) {
                const newKeys = Object.keys(swiperParams[key]);
                const oldKeys = Object.keys(oldParams[key]);
                if (newKeys.length !== oldKeys.length) {
                    addKey(key);
                } else {
                    newKeys.forEach((newKey) => {
                        if (swiperParams[key][newKey] !== oldParams[key][newKey]) {
                            addKey(key);
                        }
                    });
                    oldKeys.forEach((oldKey) => {
                        if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);
                    });
                }
            } else if (swiperParams[key] !== oldParams[key]) {
                addKey(key);
            }
        } else if (key in swiperParams && !(key in oldParams)) {
            addKey(key);
        } else if (!(key in swiperParams) && key in oldParams) {
            addKey(key);
        }
    });
    return keys;
}
 
export {
    getChangedParams
};