svelte - Svelte - 从#each 块中提取值并传入函数
问题描述
使用 svelte 我喜欢在#each 块中按下按钮时捕获一个值(例如汽车价格),以便将其传递给另一个组件。
代码示例:
<script>
import TeslaStore from "../stores/TeslaStore.js";
const cars = $TeslaStore.filter((e) => e.name === "Model S");
</script>
{#each cars as car}<button>{car.label} {car.price}</button>{/each}
我知道,对于简单的提取,您可以使用 on:click 回调函数,例如:
on:click(() => price = car.price)
但这对我没有帮助,因为我实际上需要调用并运行一个可以传递该值的函数。
任何建议表示赞赏!
解决方案
我喜欢使用高阶函数来完成这类事情:
<script>
import TeslaStore from "../stores/TeslaStore.js";
const cars = $TeslaStore.filter((e) => e.name === "Model S");
// This creates a function for a specific car.
const selectsCar = (car) => { /* ... do something with car.price ... */ }
</script>
{#each cars as car}
<button on:click={selectsCar(car)}>{car.label} {car.price}</button>
{/each}
我实际上需要调用并运行一个可以传递该值的函数。
根据您要完成的工作(如果我对这个建议不满意,请道歉),您可以使用createEventDispatcher
从 svelte 导出的组件“输出”这个值。
// Reworked from previous example:
import { createEventDispatcher } from 'svelte';
const dispatch = createEventDispatcher();
const selectsCar = (car) => dispatch('select-car', car);
推荐阅读
- python - 出现增量的新列,如 excel 中的 countif($A$2:A2,A2)
- java - 我怎样才能忽略一个类中另一个类的任何字段?
- javascript - 如何编写一个与nest & express兼容的类
- android - Mapbox Android SDK Track 设备位置总是崩溃
- javascript - 自动 Firebase SDK 不工作:net::ERR_ABORTED 404
- python - 使用 Python 显示洪水地图
- spring-boot - 如何使用 spring boot 和 dynamodb 将关系表转换为一个表
- java - 如何在 Java 中的 Azure Functions 中实现 Azure AD
- php - 显示目录中的所有文件并允许用户上传和删除
- ios - 没有在 RxMoya 上触发