面试题答案
一键面试-
Svelte组件结构:
- 首先创建一个包含多个按钮的Svelte组件,假设名为
ButtonGroup.svelte
。
<div bind:this={parentDiv} class="button - group"> <button value="button1">Button 1</button> <button value="button2">Button 2</button> <button value="button3">Button 3</button> </div> <script> let parentDiv; function handleClick(event) { if (event.target.tagName === 'BUTTON') { const buttonValue = event.target.value; console.log(`Clicked button with value: ${buttonValue}`); } } // 绑定点击事件到父元素 $: if (parentDiv) { parentDiv.addEventListener('click', handleClick); } </script> <style> .button - group { display: flex; gap: 10px; } </style>
- 在上述代码中:
- 创建了一个包含多个按钮的
div
元素,并使用bind:this
指令将其引用存储在parentDiv
变量中。 - 定义了
handleClick
函数,该函数在父元素的点击事件触发时执行。 - 通过
if (event.target.tagName === 'BUTTON')
判断点击的目标是否是按钮,如果是,则获取按钮的value
属性值。 - 使用
$:
语句确保当parentDiv
有值时(即组件渲染完成后),为parentDiv
添加点击事件监听器。
- 创建了一个包含多个按钮的
- 首先创建一个包含多个按钮的Svelte组件,假设名为
-
另一种使用
on:click
指令的方式:<div class="button - group" on:click={handleClick}> <button value="button1">Button 1</button> <button value="button2">Button 2</button> <button value="button3">Button 3</button> </div> <script> function handleClick(event) { if (event.target.tagName === 'BUTTON') { const buttonValue = event.target.value; console.log(`Clicked button with value: ${buttonValue}`); } } </script> <style> .button - group { display: flex; gap: 10px; } </style>
- 这种方式直接在
div
元素上使用on:click
指令绑定点击事件处理函数handleClick
,逻辑与第一种方式类似,同样通过判断点击目标是否为按钮来获取按钮相关信息。
- 这种方式直接在