Obsidian v1.7.2๋ถ€ํ„ฐ Obsidian์ด ๋กœ๋“œ๋  ๋•Œ ๋ชจ๋“  ๋ทฐ๋Š” DeferredView์˜ ์ธ์Šคํ„ด์Šค๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ทฐ๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋ฉด(์ฆ‰, ํฌํ•จ๋œ ํƒญ ๊ทธ๋ฃน ๋‚ด์—์„œ ํƒญ์ด ์„ ํƒ๋˜๋ฉด), leaf๋Š” ๋‹ค์‹œ ๋ Œ๋”๋ง๋˜๊ณ  ๋ทฐ๋Š” ์˜ฌ๋ฐ”๋ฅธ View ์ธ์Šคํ„ด์Šค๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ˜„์žฌ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์ผ๋ถ€ ๊ฐ€์ •์ด ๊นจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

leaf.view์— ์ ‘๊ทผํ•˜๊ธฐ

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ž‘์—… ๊ณต๊ฐ„์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒฝ์šฐ(iterateAllLeaves ๋˜๋Š” getLeavesOfType ์‚ฌ์šฉ), leaf.view์— ๋Œ€ํ•œ ๊ฐ€์ •์„ ํ•˜๊ธฐ ์ „์— instanceof ํ™•์ธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ด์ œ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

// ๋‚˜์œ ์˜ˆ
workspace.iterateAllLeaves(leaf => {
    if (leaf.view.getViewType() === 'my-view') {
        let view = leaf.view as MyCustomView;
        ...
    }
});
 
// ์ข‹์€ ์˜ˆ
workspace.iterateAllLeaves(leaf => {
    if (leaf.view instanceof MyCustomView) {
        ...
    }
});
// ๋‚˜์œ ์˜ˆ
let leaf = workspace.getLeavesOfType('my-view').first();
if (leaf) {
	let view = leaf.view as MyCustomView;
}
...
 
// ์ข‹์€ ์˜ˆ
let leaf = workspace.getLeavesOfType('my-view').first();
if (leaf && leaf.view instanceof MyCustomView) {
    ...
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ž‘์—… ๊ณต๊ฐ„์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ๊ฐ€์ •์œผ๋กœ ์ธํ•ด ์ค‘๋‹จ๋˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—… ๊ณต๊ฐ„ ์–ด๋””์—์„œ๋‚˜ CustomView์— ์ ‘๊ทผํ•˜๊ธฐ

๋”ฐ๋ผ์•ผ ํ•  ์ผ๋ฐ˜์ ์ธ ๊ทœ์น™: ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ทฐ์™€ ํ†ต์‹ ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๋ทฐ๋Š” ๋ณด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ž‘์—… ๊ณต๊ฐ„์˜ CustomView ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ด์ „ ์ฝ”๋“œ ์กฐ๊ฐ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ํ•ด๊ฒฐ์ฑ…์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค:

let leaf = workspace.getLeavesOfType('my-view').first();
if (leaf) {
	await workspace.revealLeaf(leaf); // ๋ทฐ๊ฐ€ ๋ณด์ด๋„๋ก ํ•˜๊ณ , ๋ทฐ๊ฐ€ ์™„์ „ํžˆ ๋กœ๋“œ๋˜๋„๋ก `await`ํ•ฉ๋‹ˆ๋‹ค.
	if (leaf.view instanceof MyCustomView) {
		let view = leaf.view; // ์ด์ œ CustomView๋ฅผ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค.
	}
}

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, ์ด๊ฒƒ์ด ์‚ฌ์šฉ์ž ์ •์˜ ๋ทฐ์— ์ ‘๊ทผํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋“œ๋Ÿฌ๋‚ด์ง€ ์•Š๊ณ  CustomView์— ์ ‘๊ทผํ•˜๊ธฐ (๊ณ ๊ธ‰)

๋ทฐ๋ฅผ ๋“œ๋Ÿฌ๋‚ด์ง€ ์•Š๊ณ  ์ ‘๊ทผํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ธฐ์กด ๋ทฐ ์œ ํ˜•์— ์ˆ˜์ •์„ ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ๋ทฐ๊ฐ€ ๋กœ๋“œ๋˜๋„๋ก ์ˆ˜๋™์œผ๋กœ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

let leaves = workspace.getLeavesOfType('my-view');
for (let leaf of leaves) {
  if (requireApiVersion('1.7.2')) {
    await leaf.loadIfDeferred(); // ๋ทฐ๊ฐ€ ์™„์ „ํžˆ ๋กœ๋“œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
  }
  // ์—ฌ๊ธฐ์„œ ์ˆ˜์ • ์ˆ˜ํ–‰...
}

์„ฑ๋Šฅ ๊ฒฝ๊ณ 

loadIfDeferred๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฉด, ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ฃผ์–ด์ง„ ๋ทฐ์—์„œ ์ด ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์•„๊ปด์„œ ์‚ฌ์šฉํ•˜์„ธ์š”.