Skip to content

Commit 4d7b1aa

Browse files
committed
fix(g-svg): autoDraw should be true and immutable, close #191
1 parent 14ff076 commit 4d7b1aa

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { expect } from 'chai';
2+
import getCanvas from '../get-canvas';
3+
4+
describe('#191', () => {
5+
let canvas;
6+
let circle;
7+
8+
before(() => {
9+
canvas = getCanvas('svg-circle');
10+
circle = canvas.addShape('circle', {
11+
attrs: {
12+
x: 20,
13+
y: 20,
14+
r: 20,
15+
fill: 'red',
16+
},
17+
});
18+
});
19+
20+
it.only('autoDraw should be true and immutable', () => {
21+
expect(canvas.get('autoDraw')).eqls(true);
22+
canvas.set('autoDraw', false);
23+
expect(canvas.get('autoDraw')).eqls(true);
24+
});
25+
26+
it.only('avoid redundant rendering when animating and repeat is true', (done) => {
27+
circle.animate(
28+
{
29+
r: 40,
30+
},
31+
{
32+
duration: 200,
33+
repeat: true,
34+
}
35+
);
36+
setTimeout(() => {
37+
const count = document.getElementsByTagName('circle').length;
38+
expect(count).eqls(1);
39+
done();
40+
}, 1000);
41+
});
42+
});

packages/g-svg/src/canvas.ts

+15-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,21 @@ import Defs from './defs';
1010

1111
class Canvas extends AbstractCanvas {
1212
constructor(cfg) {
13-
super(cfg);
13+
super({
14+
...cfg,
15+
autoDraw: true,
16+
});
17+
}
18+
19+
// 覆盖基类中的 set 方法
20+
set(name, value) {
21+
// autoDraw 不可修改,始终为 true
22+
// TODO: 应该在控制台给出 Warning 提示,引导用户避免这种用法。需要在 @antv/util 中提供通用的 warning 方法,便于在其他 antv 项目中使用
23+
if (name === 'autoDraw') {
24+
this.cfg[name] = true;
25+
} else {
26+
super.set(name, value);
27+
}
1428
}
1529

1630
/**

0 commit comments

Comments
 (0)