在 Svelte 中传递道具

2024-02-24

我正在尝试使用 Svelte、Svelte Routing 和 Firestore 实现一个相当标准的博客应用程序,但我认为我误解了 props 在组件之间传递方式的基本部分。

我的初始代码基于 Fireship.io 上的优秀教程 - 该教程按照教程工作:https://fireship.io/lessons/svelte-v3-overview-firebase/ https://fireship.io/lessons/svelte-v3-overview-firebase/

从那里我添加了 Svelte Routing -https://github.com/EmilTholin/svelte-routing https://github.com/EmilTholin/svelte-routing- 我正在尝试添加一条查看路线。

App.svelte的相关部分:

<Router url="{url}">
    <Navbar user="{user}" />

    <div>
        <Route path="posts/:id" component="{Post}" />
        <Route path="posts/add" component="{PostForm}" />
        <Route path="posts" component="{Blog}" />
        <Route path="/" component="{Home}" />
    </div>

</Router>

在我的博客组件中,我使用一个名为 PostTeaser 的组件,在其中传递一个到帖子视图页面的链接。

博客组件:

<div class="posts">
    {#each posts as post}
      <PostTeaser post="{post}" />
    {/each}
</div>

PostTeaser 组件:

<div class="post-teaser">
   <h2 class="title is-3"><Link to="posts/{ post.id }" {post}>{ post.title }</Link></h2>
   <div class="post-teaser-content">{ post.content }</div>
</div>

我在浏览器中收到警告:<Link> was created with unknown prop 'post'

尽管预告片确实出现在屏幕上并包含正确的信息。

当我点击帖子(即帖子组件)时,我的数据未定义。

我正在放置export let post;在我每个组件的脚本标签中。

我应该使用“存储”来存储我的数据吗?目前,我正在 BlogComponent 中获取数据并将其沿线传递。这似乎是不正确的。任何帮助不胜感激。

请参阅此处查看更完整的示例:https://codesandbox.io/s/romantic-cannon-ri8lo https://codesandbox.io/s/romantic-cannon-ri8lo


使用svelte-routing,你不需要从<Link>组件,您可以从<Route>隐式组件。你哪里有这个...

<Route path="posts/:id" component="{Post}" />

...你告诉路由器如果 URL 与模式匹配/posts/:id,它应该渲染Post组件,传递给它一个id与 URL 的该部分匹配的 prop。

The Post组件负责根据该数据获取其数据。所以在这种情况下,您可以移动posts数组到一个单独的模块中,并更改Post.svelte因此:

<script>
  import posts from "./posts.js";

  export let id;
  $: post = posts.find(p => p.id == id);
</script>

<div class="post">
  <h1>{ post.title }</h1>
  <div class="post-content">{ post.content }</div>
</div>

(请注意,props 是字符串化的,因为它们源自href,所以我们需要一个==比较而不是===.)

这是一个工作叉子。 https://codesandbox.io/s/clever-bird-26xkx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Svelte 中传递道具 的相关文章

  • 在 userCodeAppPanel 中看不到我的 javascript 代码

    这是来自 Google 电子表格中包含的脚本的代码 唯一的其他代码是onOpen它创建菜单和showDialog 功能 function showDialog userInterface HtmlService createHtmlOutp
  • 如何在单页应用程序中使用 #-URL?

    本文 http danwebb net 2011 5 28 it is about the hashbangs提出了一个非常令人信服的论点 因为 URL 是长期存在的 它们被添加书签并传递 所以它们应该是有意义的 并且使用哈希进行真正的路由
  • 弃用警告:时刻构造回退到 js Date

    我正在尝试转换这个日期时间 150423160509 这是 utc 日期时间 改为以下格式 2015 04 24 00 05 09 本地时区 通过使用 moment js var moment require moment timezone
  • Javascript 无法正确排序 DECIMAL 数字

    我有一些代码可以按字母顺序对名称进行排序 我遇到的问题是它处理小数的方式 它对名称进行排序 如下所示 我宁愿它按数字递增 DOG 1 0510 DOG 1 1031 DOG 11 1792 DOG 12 0920 DOG 12 1170 D
  • jQuery数据表设置列设计和成功回调中的值

    我为我的数据表编写了以下代码 它用我的数据库中的内容填充表 如下所示 if datatable null datatable destroy datatable tableProducts DataTable pageLength 50 b
  • 如何针对 IE 进行优化?

    我有一个 JS 密集型应用程序 它在 IE 中运行缓慢 我将花费大约一周的时间来优化 IE 并且我想要一些关于尝试的方向 我发现这个线程引用Drip https ieleak svn sourceforge net svnroot iele
  • 从 ES6 模块导入函数表达式或函数声明有什么区别?

    据我了解 参见第 16 3 2 1 节 http exploringjs com es6 ch modules html ES6 允许函数 类导出操作数使用不同的语法 区别在于导出的函数是否需要在导入时解释为函数声明 在这种情况下 您可以编
  • TypeError:cli.init 不是 React Native 的函数

    在 MacBook Air M1 芯片中运行 npx react native init appName 时 TypeError cli init is not a function at run opt homebrew lib node
  • 如何显示/隐藏jsf组件

    在我的一个 JSF 应用程序中 顶部的标题部分包含 selectOneMenu 底部的内容部分显示过滤器组件 默认情况下 应用程序首先在顶部显示 selectOneMenu 数据 在底部显示相应的 Filter 信息 如果用户选择不同的se
  • Chrome 跨域 PATCH 请求不起作用

    我有一个带有 REST Api 的网站 现在我正在创建一个浏览器扩展 它将从某些页面收集数据并将它们发送回 REST Api 因为我希望我的扩展能够与 Firefox 和 Chrome 兼容 并且易于维护 所以我将实际代码作为脚本标记注入到
  • Lightbox:如何翻译“Image x of x”文本?

    我使用 Lightbox 2 作为图像集 当我的网站的访问者单击该集中的缩略图时 它将显示 图像的放大版本 下面是 描述 取自 a 标题属性 其下方 文本 Image x of x 例如 Image 1 of 12 有谁知道在哪里翻译 更改
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • Firefox 上的 jquery 焦点未设置

    我想将焦点设置到我的文本区域 以下是我的代码 this textInput val show focus 但它不起作用 实际上 当我按下鼠标按钮时 它会出现 但是当我松开鼠标时 它会从文本区域中删除 因此 经过大量搜索后 我发现 setTi
  • jQuery 模板插件:如何创建双向绑定?

    我开始使用 jQuery 模板插件 微软创建的 但现在我面临这个问题 模板用于绑定到对象数组的一堆表单 当我更改其中一个表单上的某些内容时 我希望更新绑定的对象 但我不知道如何自动执行该操作 这是一个简单的例子 现实生活中的模板和对象要复杂
  • 如何使用转义的 unicode 解码字符串?

    我不确定这叫什么 所以我在搜索时遇到了麻烦 如何使用 unicode 解码字符串http u00253A u00252F u00252Fexample com to http example com使用 JavaScript 我试过unes
  • Kendo 刷新 (DropDownList.refresh()) 不起作用错误未定义

    我试图在另一个 DropDownList 更改后刷新下拉列表 但 Refresh 方法未定义错误正在升级 我尝试再次读取数据源 它显示它正在加载 但数据仍然相同 帮助解决这个问题请 Code DropDownList1 change fun
  • 为什么我从 c# 到 js 得到不同的 MD5 哈希值?

    我有一个用于加密密码的 C 函数 System Security Cryptography MD5CryptoServiceProvider md5Provider new System Security Cryptography MD5C
  • Dojo“正在加载”消息

    我是 Dojo 新手 所以我需要一些帮助 我的一些链接需要一段时间 当用户单击时 页面开始加载需要几秒钟 我想添加一条 正在加载 消息 我可以用 旧时尚方式 来做 但我想学习新的 更简单 更智能的 Dojo 方式 具体如何工作现在并不重要
  • javascript 闭包和对象引用

    我的情况有点晦涩难懂 主要是因为我认为我已经掌握了闭包 所以基本上我想要的是将集合重置为默认值 假设我有一个集合 它具有带有对象参数数组的构造函数 var c new collection x y z 然后集合定期更新 因为我没有保留数组的
  • “memset”没有 DLL 那么如何 ctype 它

    如何使用memset在 jsc 类型中 没有对应的 DLL 我搜索 搜索了 js ctype 代码 但找不到要破解的示例 如果你只是想memset一个数组为零字节 然后我有 好消息 大家 js ctypes 会将新数组初始化为零 否则 最简

随机推荐

  • jQuery 方法:.submit() 与 .trigger('submit') 之间的区别

    jQuery 允许通过以下任一方式以编程方式触发表单提交 js form class hook submit js form class hook trigger submit 注 我的理解是 trigger submit is to su
  • C# == 运算符详细做什么?

    在 C 中 当您在两个对象上使用 运算符进行比较时 后台到底发生了什么 它只是比较地址吗 或者是类似 Equals 或 CompareTo 的东西吗 PS java中的 运算符怎么样 它的行为相同吗 据我所知 它按值 相等 比较值类型 它通
  • Clojure:如何在运行时找出函数的数量?

    给定一个函数对象或名称 我如何确定它的数量 就像是 arity func name 我希望有办法 因为 arity 在 Clojure 中非常重要 函数的元数存储在变量的元数据中 arglists meta str x x ys 这要求该函
  • Lisp 中的函数名可以有别名吗?

    就像包裹一样 我使用Emacs 也许 它可以提供某种解决方案 例如 defun the very very long but good name 稍后在代码中没有用处 但名字就像Fn 15或者第一个字母缩写也没有用 是否可以使用类似于包的别
  • Java 静态方法上的线程锁

    根据我对 Java 类的了解 非静态同步方法 在特定对象上获取锁 静态同步方法 在类上获取锁 我对此有点困惑 因为我们可以通过类名或对象名调用静态方法 请假设我的类有 4 个方法都是同步的 2 个方法是静态的 2 个方法不是静态的 如果我创
  • Jquery 在 Href 上创建双击事件

    伙计们是否可以使用 jquery 为 a href 创建双击事件 双击锚点执行操作的问题是 页面将在第一次单击时重定向 从而阻止双击及时响应 如果您想 拦截 点击事件 以便双击事件有机会在页面重定向之前触发 那么您可能必须设置点击超时 如下
  • 如何在 Django 中获取用户 IP 地址?

    如何在 Django 中获取用户的 IP 我有这样的看法 Create your views from django contrib gis utils import GeoIP from django template import Re
  • 如何在 Aurelia 中“继承”可绑定属性?

    我正在使用 TypeScript 开发 Aurelia 应用程序 在此应用程序中 我定义了一组自定义元素 每个元素共享一组可绑定属性 这些属性被转换为 css 设置 如以下简化示例所示 import computedFrom bindabl
  • 在 Azure Linux VM 中,什么仍然存在?什么磁盘收费?

    我在 Microsoft 的 Azure 中创建了一个小型 Linux VM 我还创建了一个 20GB BLOB 并将其安装为文件系统 在我的虚拟机上 我看到以下内容 根文件系统 约28GB 启动文件系统 约500MB 我的 20GB 文件
  • iphone AVEditDemo 或任何视频处理示例

    我正在尝试以某种方式处理视频 剪切和合并视频 录制屏幕并从该录制内容中制作视频 我也在互联网和 stackoverflow 上查找 看到苹果有一个名为 AVEditDemo 的代码示例 但我永远找不到它 如果有人有这个例子并愿意与我分享 或
  • 微软 Roslyn 与 CodeDom

    From a 新闻稿 http www infoworld com d application development microsofts roslyn reinventing the compiler we know it 176671
  • Laravel 5.5 将迁移与生产数据库合并

    希望我能很好地解释这一点 我有一个 Laravel 应用程序 已经投入生产了一分钟 所以 我有一堆包含很多更改的迁移文件 我想合并这些迁移文件而不丢失数据库 我的方式think这会起作用 将所有生产表迁移到所需状态 将所有迁移文件合并为所需
  • 如何列出 mongo shell 中的所有数据库?

    我知道怎么做列出特定数据库中的所有集合 https stackoverflow com questions 8866041 how to list all collections in the mongo shell 但是如何在 Mongo
  • mysqld_safe UNIX 套接字文件的目录“/var/run/mysqld”不存在

    使用 mysqld safe 启动 mysql 服务器 5 7 17 时 出现以下错误 2017 02 10T17 05 44 870970Z mysqld safe Logging to var log mysql error log 2
  • 从 XMLHttpRequest 对象中删除 cookie

    我正在使用 jquery 进行 ajax 调用 例如 ajax url path to webservice asmx beforeSend function xmlHTTPRequest modify headers here remov
  • 分页计算算法

    我正在尝试计算分页 var pagination total result length per page itemsPerPage required current page currentPage required last page
  • 用回形针圆角

    如何用回形针创建圆角 我找到了这个解决方案 它创建了使用convert options用回形针实现圆角 http loo no 2009 08 09 rounded corners with paperclip 但它不适用于 Rails 3
  • 跨浏览器事件对象规范化?

    我正在寻找有关事件对象的事件规范化的良好资源 我想自己做 但我总觉得我会错过一些东西 这是我到目前为止所掌握的 如果我错过了什么 请告诉我 var eFix function e e e window event e target e ta
  • Android,Cometd:Cometd 发送备用消息

    我正在开发一个 Android 应用程序 在其中实现聊天功能 考虑到 Cometd 的使用 聊天速度相当快 但由于某种原因 Cometd 正在发送备用消息 如果它发送message 1 则不发送message 2 然后发送3 依此类推 这是
  • 在 Svelte 中传递道具

    我正在尝试使用 Svelte Svelte Routing 和 Firestore 实现一个相当标准的博客应用程序 但我认为我误解了 props 在组件之间传递方式的基本部分 我的初始代码基于 Fireship io 上的优秀教程 该教程按