You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中href使用JS表达式实现上下篇导航的问题及解决

问题分析与解决方案

你遇到的问题其实是被自增(++)和自减(--)运算符的特性坑到了:

  • post.id-- 会先返回当前的post.id值,再把原始的post.id减1
  • post.id++ 会先返回当前的post.id值,再把原始的post.id加1

更关键的是,这两个运算符会直接修改posts数组里原始数据的id值,再加上Vue循环渲染时会多次执行这些表达式,就导致链接的目标id完全不符合预期(比如下一篇跳到id减2的位置)。

修复方法

别用自增自减运算符,直接用普通的加法/减法表达式计算目标id就行——这样不会修改原始数据,结果也完全符合你的需求:

修改组件模板里的链接部分:

<a :href="'#' + (post.id - 1)">Previous Entry</a>
<a :href="'#' + (post.id + 1)">Next Entry</a>

完整的组件代码修正后如下:

Vue.component('blog-post', {
  props: ['post'],
  template: `
    <div class="blog-post" v-bind:id="post.id">
      <h1>{{ post.title }}</h1>
      <div v-html="post.body"></div>
      <a :href="'#' + (post.id - 1)">Previous Entry</a>
      <a :href="'#' + (post.id + 1)">Next Entry</a>
    </div>
  `
})

补充说明

正如你后来发现的,这种写法完美解决了问题——我们只是基于当前post.id计算出上一篇/下一篇的id,不会改动原始数据,也就避免了运算符副作用带来的奇怪问题。感谢blex的提示!

内容的提问来源于stack exchange,提问作者NoobCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:14:20