javascript - 用于在组件之间来回切换的 Svelte 自定义存储
问题描述
我在 Svelte 做一个 SPA,想知道是否可以创建一个自定义存储来在组件之间来回切换。
这是一个工作示例,我使用字符串数组来显示该方法。 https://svelte.dev/repl/1f9e72105e8d45e0bd6df61b304fd257?version=3.31.0
import { writable } from 'svelte/store'
function create_navigation() {
const screens = ['Step 1', 'Step 2', 'Step 3', 'Step 4', 'Step 5']
const { subscribe, set } = writable(screens[0])
let n = 0
return {
subscribe,
next: () => (n < screens.length - 1 && n++, set(screens[n])),
prev: () => (n > 0 && n--, set(screens[n])),
reset: () => set(screens[0])
}
}
export const screen = create_navigation()
如果我们将一些组件导入 mystore
并创建一个组件数组,它将不会呈现。可能我错过了一些概念,所以任何帮助都会非常感激:)
现在,为了解决这个问题,我使用我的数字store
,然后App.svelte
我设置我的组件数组。
解决方案
您可以创建一个组件数组,而不是字符串数组,例如:
import { writable } from 'svelte/store'
import Screen1 from './Screen1.svelte'
import Screen2 from './Screen2.svelte'
function create_navigation() {
const screens = [Screen1, Screen2]
.
.
.
并<svelte:component this={$screen}/>
在您的App.svelte
组件中使用。
示例:https ://svelte.dev/repl/5752ba81b6c94b80b31131c02431e8ac?version=3.31.0
推荐阅读
- javascript - 模糊 testcafe 中的输入字段
- javascript - Ajax HTTP 请求拦截器,在 promise.resolve 后添加标头值不起作用
- php - 我怎样才能从 git status "On branch master \n Nothing to commit.." 到 "On branch master \n Your branch is up to date \n Nothing to .." ?
- javascript - 带有 Typescript 的 ES6 箭头函数
- sql - Invoke-sqlcmd 不按行返回数据
- regex - 无法使正则表达式搜索匹配字符串中的 10 位数字
- html - 更改部分 Material Icon 的颜色
- python - 编写文字冒险游戏
- c - 为什么初始化指向 NULL 的指针是一个好习惯?
- php - 使用 Composer 安装后解析 PHP SDK 无法创建查询