了解如何在Svelte中使用道具,并让两个具有父/子关系的组件相互交流
你可以使用语法import ComponentName from 'componentPath' ,将一个Svelte组件导入任何其他组件。
<script>
import SignupForm from './SignupForm.svelte';
</script>
路径是相对于当前组件路径的。
./,意思是 "这个相同的文件夹"。你会用../,回到一个文件夹,以此类推。
一旦你这样做了,你就可以在标记中使用新导入的组件,就像一个HTML标签。
通过这种方式,你在两个组件之间形成了父子关系:导入的组件和被导入的组件。
通常你想让父组件向子组件传递数据。
你可以使用props来实现。Props的行为类似于普通HTML中的属性,它们是一种单向的通信形式。
在这个例子中,我们传递了disabled 道具,将JavaScript值true 传给它。
<SignupForm disabled={true}/>
在SignupForm组件中,你需要导出 disabled 道具,以这种方式。
<script>
export let disabled
</script>
这是你表达道具被暴露给父级组件的方式。
当使用该组件时,你可以传递一个变量而不是一个值,以动态地改变它。
<script>
import SignupForm from './SignupForm.svelte';
let disabled = true
</script>
<SignupForm disabled={disabled}/>
当disabled 变量值发生变化时,子组件将以新的道具值更新。例子。
<script>
import SignupForm from './SignupForm.svelte';
let disabled = true
setTimeout(() => { disabled = false }, 2000)
</script>
<SignupForm disabled={disabled}/>