mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-26 03:14:14 +02:00
Update controller.ts
This commit is contained in:
@@ -141,14 +141,15 @@ export class RoomController {
|
|||||||
if (deepEqual(this.roomState.value, roomState)) return; // vueのリアクティビティが反応して無限ループになることがあるため
|
if (deepEqual(this.roomState.value, roomState)) return; // vueのリアクティビティが反応して無限ループになることがあるため
|
||||||
this.roomState.value = JSON.parse(JSON.stringify(roomState));
|
this.roomState.value = JSON.parse(JSON.stringify(roomState));
|
||||||
if (this.selected.value != null) {
|
if (this.selected.value != null) {
|
||||||
// そのまま入れると「オブジェクト(newSelected)の内容」は変わってるけど「オブジェクトの参照」そのものは変化していないから、
|
const newSelected = roomState.installedObjects.find(o => o.id === this.selected.value.objectId);
|
||||||
// その状態で代入しようがtriggerRef呼ぼうがVueは「子に対しては」更新があったと見做してくれない(親から当該refをwatchする場合は発火する)っぽい(バグか仕様かは不明)
|
|
||||||
// そのため新しい参照にするためにdeepClone
|
|
||||||
const newSelected = JSON.parse(JSON.stringify(roomState.installedObjects.find(o => o.id === this.selected.value.objectId)));
|
|
||||||
if (newSelected) {
|
if (newSelected) {
|
||||||
this.selected.value = {
|
this.selected.value = {
|
||||||
objectId: newSelected.id,
|
objectId: newSelected.id,
|
||||||
objectState: newSelected,
|
|
||||||
|
// そのまま入れると「オブジェクト(newSelected)の内容」は変わってるけど「オブジェクトの参照」そのものは変化していないから、
|
||||||
|
// その状態で代入しようがtriggerRef呼ぼうがVueは「子に対しては」更新があったと見做してくれない(親から当該refをwatchする場合は発火する)っぽい(バグか仕様かは不明)
|
||||||
|
// そのため新しい参照にするためにdeepClone
|
||||||
|
objectState: JSON.parse(JSON.stringify(newSelected)),
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
this.selected.value = null;
|
this.selected.value = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user