微信排名数据跟新后,怎么刷新(重绘)私域?

每次把子域的父节点active给false了,然后打开给ture。
子域引擎只会在显示的时候发消息,绘制。
后面即使从主域传入消息给私域,更新排名数据,再用draw(),也无法绘制出新数据的排名。在template内log数据可以看到新的记录,但是,就是draw不出来(代码如下)。
我也尝试过关闭时destroy过私域这个component,重新打开又add子域的component,这时候是可以更新的,但是尺寸总是错误的,无论传入什么尺寸,显示都是缩小的子域。

index.js 代码文件如下:

const style = require(’./render/style’)
const Layout = require(’./engine’).default
const dataDemo = require(’./render/dataDemo’);

let __env = GameGlobal.wx || GameGlobal.tt || GameGlobal.swan;
let sharedCanvas = __env.getSharedCanvas();
let sharedContext = sharedCanvas.getContext(‘2d’);
let newData;

export function draw() {
let template = require(’./render/template’)
Layout.clear();
Layout.init(template, style);
Layout.layout(sharedContext);
}

export function updateViewPort(data) {
console.log(‘update’);
Layout.updateViewPort({
x: data.x,
y: data.y,
width: data.width,
height: data.height,
});
}

__env.onMessage(data => {
console.log(‘data’, data);
if (data.type === ‘engine’ && data.event === ‘viewport’) {
newData = data;
updateViewPort(data);
dataDemo.getFriendRankData(draw);
}

if (data.event === ‘updateRankData’) {
updateViewPort(newData);
dataDemo.getFriendRankData(draw);
}
});