首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Svelte 3 getContext:没有在Svelte中存储

Svelte 3 getContext:没有在Svelte中存储
EN

Stack Overflow用户
提问于 2019-12-03 21:53:58
回答 1查看 207关注 0票数 0

在最近的浏览器(Chrome 78 / Safari 13 / Firefox 70)中,设置在上下文中的商店似乎可以按预期工作,如下所示:

代码语言:javascript
运行
复制
// stores.js
import { writable } from 'svelte/store';
import { setContext, getContext } from 'svelte';

function createStore(key) {
  const store = writable();
  setContext(key, store);
  return store;
}

export function getStore(key) {
  const store = getContext(key);
  if (!store) {
    return createStore(key);
  }
  return store;
}

并在组件中使用,例如:

代码语言:javascript
运行
复制
// Form.svelte
import { getStore } from '../stores/stores.js';
import Header from './Header.svelte'
export let incomingPages;

const currentPage = getStore('currentPage')
const numberOfPages = getStore('numberOfPages')
$currentPage = 0
$numberOfPages = Object.keys(incomingPages).length
代码语言:javascript
运行
复制
<div class="page-wrapper" >
  <Header />

  <div class="page">
    <svelte:component this={pages[$currentPage].page}
                      descriptiveCopy={pages[$currentPage].descriptiveCopy} 
                      question={pages[$currentPage].question} />
  </div>
</div>

然后页眉组件作为form的子级...

代码语言:javascript
运行
复制
// Header.svelte
import { getStore } from '../stores/stores.js'
const totalPages = getStore('numberOfPages')
const currentPage = getStore('currentPage')
代码语言:javascript
运行
复制
<div class="u-progress">
  <span>{$currentPage + 1} of {$totalPages - 1}</span>
</div>

但似乎不能在ie11中工作(我知道在svelte中不一定支持ie11 )。我正在试着调试它,但我不明白上下文是如何工作的。由于getStore函数没有找到与键匹配的存储,因此它创建了一个新的不相关的存储。这个问题可以用babel ES6 -> ES5解决吗?我做了一个初步的测试,包括巴别塔,但没有用...谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-04 05:14:53

context API使用IE11中不存在的Map对象。你需要带一个polyfill

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59158692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档