Как мне сослаться на родительский компонент компонента Svelte?
В документации Svelte по Props я использую 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>
Дочерний компонент - 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>
Благодаря реквизитам, HTML <p>
элементы могут четко ссылаться на родителя. Однако как я могу ссылаться на значения в родительском компоненте в JavaScript дочернего компонента?
1 ответ
Хуки и методы внутри жизненного цикла, состояние доступа с 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>