会员权益
This commit is contained in:
50
uni_modules/zebra-swiper/libs/vue2/get-changed-params.js
Normal file
50
uni_modules/zebra-swiper/libs/vue2/get-changed-params.js
Normal file
@@ -0,0 +1,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
|
||||
};
|
||||
Reference in New Issue
Block a user