【发布时间】:2021-04-05 19:30:59
【问题描述】:
我在Popup.svelte 中有一个简单的弹出组件:
<script>
let hidden = true;
</script>
<button on:click={() => hidden = !hidden}> Pop </button>
<div class:hidden> Extra Content </div>
<style>
.hidden { display: none; }
</style>
我的应用中显示了其中的多个:
<script>
import Popup from './Popup.svelte';
</script>
<div> <Popup /> </div>
<div> <Popup /> </div>
<div> <Popup /> </div>
我想在单击时隐藏组件级别的其他弹出窗口,这意味着任何时候都只能看到一个弹出窗口。我认为 svelte module contexts 会适合,但我无法添加对 self 的引用,我可以为其他人调用 say setHidden 函数。
<script>
import {onMount} from 'svelte';
let hidden = true;
export const setHidden = value => hidden = value;
const toggleHidden = () => {
if (hidden === true) { // transition to false
hideOthers();
}
hidden = !hidden
}
onMount(() => elements.add(self);
</script>
<script context="module">
const elements = new Set();
const hideOthers = () => elements.forEach(e => e.setHidden(true))
</script>
游乐场here
【问题讨论】:
标签: svelte-3