Match-id-2f0b8623c7ad7dda87cc0913e6702ddc6569c16c

This commit is contained in:
* 2022-12-08 21:19:21 +08:00 committed by *
parent 80ca0db9c3
commit 75e24f26e0
2 changed files with 14 additions and 3 deletions

View File

@ -96,7 +96,7 @@ function getAffectedComponents() {
// listens to messages from background
window.addEventListener('message', messageEvent => {
if (messageEvent.data.payload.type === 'horizonx request observed components') {
if (messageEvent?.data?.payload?.type === 'horizonx request observed components') {
// get observed components
setTimeout(() => {
window.postMessage({
@ -107,5 +107,14 @@ window.addEventListener('message', messageEvent => {
}, 100);
}
// executes store action
if (messageEvent.data.payload.type === 'horizonx executue action') {
const data = messageEvent.data.payload.data;
const store = getStore(data.storeId);
if (!store?.[data.action]) return;
const action = store[data.action];
const params = data.params;
action(...params);
}
});

View File

@ -79,7 +79,9 @@ export class Observer implements IObserver {
// 对象的属性被赋值时调用
setProp(key: string | symbol, mutation: any): void {
const vNodes = this.keyVNodes.get(key);
vNodes?.forEach((vNode: VNode) => {
//NOTE: using Set directly can lead to deadlock
const vNodeArray = Array.from(vNodes || []);
vNodeArray?.forEach((vNode: VNode) => {
if (vNode.isStoreChange) {
// VNode已经被触发过不再重复触发
return;