在 Svelte 中,无法根据另一个组件的值刷新组件列表
In Svelte can't get a component list refreshed based on value on another one
Svelte 的新功能,我想我还没有正确的思维方式来做这个在 jQuery for DOM 的帮助下在 vanilla Javascript 中工作的简单事情和 Ajax.
简化案例:一个页面中有两列。第一个在页面加载时填充,每个值都是一个组件。单击组件时,将调用 Web 服务以获取数据、填充变量或存储(都尝试过)。我可以取回拾取的值,将其传递给必须为第二个列表获取相关值的组件,但它仅在组件创建时有效。
Ajax 在 onMount 事件上调用 ok,但在所选组件的 id 更改时不会在反应事件上调用。
问题是:这样做的 Svelte 方法是什么?
下面通过 link 在 REPL 中演示代码。
谢谢!
https://svelte.dev/repl/92ce738b7af54a1494d88bb6632e3ed3?version=3.29.4
已找到解决方案,因此请回答以防对其他人有用,因为有功能示例代码。否则,我删除。
问题是反应性没有触发,因为修改的变量不在反应性语句中,而是在调用的函数 filterById 中。
下面这行 $: filtered_component2_list = component2_list.filter(filterById);已替换为 $: filtered_component2_list =component2_list.filter( item => {if (item.id === id_comp2) return item })
REPL 已更新,运行良好。
Svelte 的新功能,我想我还没有正确的思维方式来做这个在 jQuery for DOM 的帮助下在 vanilla Javascript 中工作的简单事情和 Ajax.
简化案例:一个页面中有两列。第一个在页面加载时填充,每个值都是一个组件。单击组件时,将调用 Web 服务以获取数据、填充变量或存储(都尝试过)。我可以取回拾取的值,将其传递给必须为第二个列表获取相关值的组件,但它仅在组件创建时有效。 Ajax 在 onMount 事件上调用 ok,但在所选组件的 id 更改时不会在反应事件上调用。 问题是:这样做的 Svelte 方法是什么? 下面通过 link 在 REPL 中演示代码。 谢谢!
https://svelte.dev/repl/92ce738b7af54a1494d88bb6632e3ed3?version=3.29.4
已找到解决方案,因此请回答以防对其他人有用,因为有功能示例代码。否则,我删除。
问题是反应性没有触发,因为修改的变量不在反应性语句中,而是在调用的函数 filterById 中。
下面这行 $: filtered_component2_list = component2_list.filter(filterById);已替换为 $: filtered_component2_list =component2_list.filter( item => {if (item.id === id_comp2) return item })
REPL 已更新,运行良好。