Skip to content

Commit a4c2a0e

Browse files
committed
fix: Auto complete dropdown flickers #1327
1 parent 1208649 commit a4c2a0e

File tree

2 files changed

+8
-12
lines changed

2 files changed

+8
-12
lines changed

Diff for: components/_util/css-animation/index.js

+3-9
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ function clearBrowserBugTimeout(node) {
5454
const cssAnimation = (node, transitionName, endCallback) => {
5555
const nameIsObj = typeof transitionName === 'object';
5656
const className = nameIsObj ? transitionName.name : transitionName;
57-
const activeClassName = nameIsObj ? transitionName.active : `${transitionName} ${transitionName}-active`;
57+
const activeClassName = nameIsObj ? transitionName.active : `${transitionName}-active`;
5858
let end = endCallback;
5959
let start;
6060
let active;
@@ -83,10 +83,7 @@ const cssAnimation = (node, transitionName, endCallback) => {
8383
clearBrowserBugTimeout(node);
8484

8585
nodeClasses.remove(className);
86-
activeClassName.split(' ').forEach((className)=>{
87-
nodeClasses.remove(className);
88-
});
89-
//nodeClasses.remove(activeClassName);
86+
nodeClasses.remove(activeClassName);
9087

9188
Event.removeEndEventListener(node, node.rcEndListener);
9289
node.rcEndListener = null;
@@ -107,10 +104,7 @@ const cssAnimation = (node, transitionName, endCallback) => {
107104

108105
node.rcAnimTimeout = requestAnimationTimeout(() => {
109106
node.rcAnimTimeout = null;
110-
// nodeClasses.add(activeClassName);
111-
activeClassName.split(' ').forEach((className)=>{
112-
nodeClasses.add(className);
113-
});
107+
nodeClasses.add(activeClassName);
114108
if (active) {
115109
requestAnimationTimeout(active, 0);
116110
}

Diff for: components/vc-trigger/Popup.jsx

+5-3
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export default {
4545
});
4646
},
4747
beforeUpdate() {
48-
if(this.domEl && this.domEl.rcEndListener) {
48+
if (this.domEl && this.domEl.rcEndListener) {
4949
this.domEl.rcEndListener();
5050
this.domEl = null;
5151
}
@@ -219,7 +219,7 @@ export default {
219219
// this.$refs.alignInstance.forceAlign();
220220
},
221221
enter: (el, done) => {
222-
// align updated后执行动画
222+
// render 后 vue 会移除通过animate动态添加的 class导致动画闪动,延迟两帧添加动画class,可以进一步定位或者重写 transition 组件
223223
this.$nextTick(() => {
224224
if (this.$refs.alignInstance) {
225225
this.$refs.alignInstance.$nextTick(() => {
@@ -229,8 +229,10 @@ export default {
229229
}
230230
});
231231
},
232-
leave: (el, done) => {
232+
beforeLeave: () => {
233233
this.domEl = null;
234+
},
235+
leave: (el, done) => {
234236
animate(el, `${transitionName}-leave`, done);
235237
},
236238
};

0 commit comments

Comments
 (0)