javascript - 在 Svelte 从孩子到祖父母的调度活动
问题描述
我的应用程序的结构如下:
- 祖父母是一种形式
- Parent 是一个调用 api 的输入
- Child显示api调用的结果
在子组件中,我想将数据传递给祖父母,具体取决于用户单击的结果。我尝试这样做,使用Event Dispatcher。不幸的是,这失败了,因为似乎只能在父母和孩子之间进行交流。有没有办法做到这一点?
这是我的(简化的)代码:
// Grandparent
<form on:submit|preventDefault={handleSubmit}>
<Search bind:item={item} on:result={e => console.log(e)} />
</form>
// Parent
<div class="search-results">
<Response data={res} />
</div>
// Child
<script>
function returnData(data) {
dispatch("result", data);
}
</script>
<button on:click={() => returnData(data)}>Click</button>
解决方案
on:<eventName>
之后,您可以在不使用任何事件处理程序的情况下冒泡事件:
// Grandparent
<form on:submit|preventDefault={handleSubmit}>
<Search bind:item={item} on:result={e => console.log(e)} />
</form>
// Parent
<div class="search-results">
<!-- only this line changes in your code:
bubble the result event -->
<Response data={res} on:result />
</div>
// Child
<script>
function returnData(data) {
dispatch("result", data);
}
</script>
<button on:click={() => returnData(data)}>Click</button>
推荐阅读
- ios - 架构 arm64 的未定义符号:未定义符号:Xcode11 Swift 5 上的 _UTTypeConformsTo
- vba - 如何在访问查询条件中使用 IIF 语句为字段添加颜色
- java - 如何调用带参数的webservice方法?
- machine-learning - 基于光学字符识别的文本分类
- python - 图元组列表之间的关系
- swift -
在 Ubuntu 18.04 中使用 LLDB 调试 Swift 5.1 时 - javascript - Ajax加载后按钮上的JQuery HTML onclick属性不起作用
- python - Jinja 模板和空查询结果
- xcode - Xcode 警告和构建时间
- javascript - 从显示 ServiceName 未定义的 javascript 调用 WCF 后