作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Sapper 中实现 next.js
中所做的事情名为 with-route-as-modal 的示例.
它的作用是,当单击链接时,新页面以模态显示而不是替换当前页面,并且 URL 会更新,以反射(reflect)当前模态页面。它在多个社交网络中实现,例如 instagram。
在 next.js
例如,它是通过使用动态 href 来完成的,如下所示:
<Link href={`/?postId=${id}`} as={`/post/${id}`}>
最佳答案
我设法以这种方式做到了:
<script>
import { prefetch } from '@sapper/app'
import { onMount, onDestroy } from 'svelte'
import Post from '../components/Post.svelte'
let props
onMount(() => {
window.onpopstate = function (event) {
if (document.location.pathname === '/about') {
props = null
} else {
const regex = /\/blog\/([\w-]+)/
if (regex.test(document.location.pathname)) {
handlePrefetch(document.location.pathname)
}
}
}
return () => {
window.onpopstate = null
}
})
function handleClick(event) {
event.preventDefault()
const clickedHref = event.currentTarget.href
if (clickedHref === location.href) return
const pathname = clickedHref.replace(location.origin, '').substring(1)
history.pushState(null, '', pathname)
handlePrefetch(pathname)
}
async function handlePrefetch(url) {
const res = await prefetch(url)
const { branch } = res
props = branch[1].props.post
}
function handleClose() {
history.pushState(null, '', 'about')
props = null
}
</script>
<svelte:head>
<title>About</title>
</svelte:head>
<h1>About this site</h1>
<p>This is the 'about' page. There's not much here.</p>
<a href="/blog/what-is-sapper" on:click="{handleClick}">lien ici</a>
{#if props}
<Post title="{props.title}" html="{props.html}"></Post>
<button on:click="{handleClose}"></button>
{/if}
我必须手动处理弹出状态事件(这样后退按钮仍然有效)。然后我用工兵
prefetch
函数并将生成的 Prop 作为本地 Prop 注入(inject)。然后我检查是否设置了任何 Prop ,然后根据它注入(inject)自定义 HTML。
<Post title={post.title} html={post.html} />
的工兵组件。
关于routing - 在 Sapper 中作为模态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61185073/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!