【问题标题】:Svelte custom store for going back and forward between components用于在组件之间来回切换的 Svelte 自定义存储
【发布时间】:2021-03-24 08:38:08
【问题描述】:

我在 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()

如果我们将一些组件导入我的store 并创建一个组件数组,它将不会呈现。可能我错过了一些概念,所以任何帮助都会非常感激:)

现在,为了解决这个问题,我使用 store 中的数字,然后在 App.svelte 中设置组件数组。

【问题讨论】:

  • 你是说你希望数组中的每个元素都是一个单独的组件,而不是像你的例子中那样的字符串?
  • 是的 ^^ 类似const screens = [Component_A, Component_B, Component_C]

标签: javascript svelte svelte-3 svelte-component svelte-store


【解决方案1】:

您可以创建一个组件数组,而不是字符串数组,例如:

import { writable } from 'svelte/store'
import Screen1 from './Screen1.svelte'
import Screen2 from './Screen2.svelte'

function create_navigation() {
  const screens = [Screen1, Screen2]
.
.
.

并在您的App.svelte 组件中使用&lt;svelte:component this={$screen}/&gt;

示例:https://svelte.dev/repl/5752ba81b6c94b80b31131c02431e8ac?version=3.31.0

【讨论】:

  • 非常感谢,我一开始就是这样做的,但可能我错过了改变更多我应该做的事情。感谢您的清晰,它已经恢复了感觉,现在它可以工作了!直接进入重点^^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 2020-01-03
  • 1970-01-01
  • 2019-10-17
  • 2020-07-14
  • 2020-09-20
相关资源
最近更新 更多