如何引用 Svelte 组件的父组件?

mik*_*ana 5 javascript svelte svelte-component svelte-2

根据有关 PropsSvelte 文档,我使用 props 将父组件的引用传递给子组件。

道具,“属性”的缩写,是您将数据从父组件向下传递到子组件的方式

这正是我想要做的。这是带有我的代码的 Svelte REPL,也在下面复制:

我的父母是App.html

<div class='widget-container'>
    <Widget foo bar="static" {baz}/>
</div>

<script>
    import Widget from './Widget.html';

    export default {
        data: function(){ 
            return {
                baz: 'click me and check the console'
            }
        },
        components: {
            Widget
        }
    };
</script>
Run Code Online (Sandbox Code Playgroud)

子组件是Widget.html

<p>foo: {foo}</p>
<p>bar: {bar}</p>
<p>baz: {baz}</p>

<script>
    export default {
        oncreate: function(){
            window.document.body.addEventListener('click', function(event){
                console.log(`Clicked!, ${baz}`)
            });
        }
    }

</script>   
Run Code Online (Sandbox Code Playgroud)

多亏了 props,HTML<p>元素可以清楚地引用父元素。但是,如何在子组件的 JavaScript 中引用父组件中的值?

Ric*_*ris 6

在生命周期钩子和方法中,使用以下命令访问状态this.get()

<p>foo: {foo}</p>
<p>bar: {bar}</p>
<p>baz: {baz}</p>

<script>
    export default {
        oncreate: function(){
            window.document.body.addEventListener('click', () => {
                const { baz } = this.get();
                console.log(`Clicked!, ${baz}`)
            });
        }
    }l
</script> 
Run Code Online (Sandbox Code Playgroud)