- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 products/index
页面和products/[slug]
在主要产品页面中,我有一个 NuxtLink
更改页面并转到 products/[slug]
并获取该产品的数据。
在第一次点击时我有一个正确的数据,但是当我点击后退或点击产品/索引页面然后尝试点击另一个产品时,我有我点击的第一个产品的信息,以及每个产品的信息,我再次获得了我点击的第一个产品的信息。
使用 console.log
让我发现我的提取数据没有改变,我是不是错过了什么?
使用 :key
和 :page-key
在 <nuxtPage/>
没用。
我点击的第一个产品
第二个产品,仍然没有变化,数据来自第一个产品
第三张图还是没有变化
productComponent.vue
<template>
<div class="mx-auto rounded border mb-7 border-blue-200 pt-1 px-2 mx-1 mb-2">
<NuxtLink :to="link">
<img
class="rounded mx-auto mb-3 border-b border-y-blue-300 pb-3"
:src="img"
:alt="alt"
/>
<div class="mt-2">
<div>
<div class="items-center font-bold text-slate-700 leading-snug">
<p class="pr-3">{{ title }}</p>
</div>
<div class="mt-2 text-lg text-slate-600 pr-3 pb-2">
قیمت : {{ price }} تومان
</div>
</div>
</div>
</NuxtLink>
</div>
</template>
<script>
export default {
name: 'ProductComponent',
props: ['title', 'price', 'img', 'alt', 'link'],
}
</script>
products/index.vue
页
<script setup>
useHead({
title: 'محصولات',
})
const {data, pending, refresh, error} = await useFetch('http://127.0.0.1:8000/api/products')
const products=data._value.data.data
</script>
<template>
<div>
<main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="relative z-10 flex items-baseline justify-between pt-24 pb-6 border-b mb-7 border-gray-200">
<h1 class="text-4xl font-extrabold tracking-tight ">محصولات</h1>
</div>
<div class=" border border-blue-300 mx-auto p-4 mb-7">
<div class="grid sm:grid-cols-2 md:grid-cols-2 gap-2 lg:grid-cols-3 xl:grid-cols-4">
<div v-for="(product,index) in products" :key="index">
<product-component :title="product.name"
:price="product.price"
:img="'http://127.0.0.1:8000/'+product.image[0].indexArray.large"
:alt="product.name"
:link="'/products/'+product.slug">
</product-component>
</div>
</div>
</div>
</main>
</div>
</template>
products/[slug]
<script setup>
const route = useRoute();
const {data: productData, pending, refresh, error} = await useFetch(`http://127.0.0.1:8000/api/products/${route.params.slug}`)
const product = productData._value.data[0]
console.log(product)
</script>
<template>
<div class="container mx-auto">
<section class="grid grid-cols-12 gap-3 mb-7 ">
<!-- little pic-->
<div class="md:col-span-1 mx-auto md:flex md:flex-wrap hidden overflow-auto" style="max-height: 36rem">
<div class="cursor-pointer bg-amber-100 max-h-9">
<div class="max-h-fit mb-3 " v-for="(myImage , index) in product.image" :key="index"
@click="switchImage('http://127.0.0.1:8000/'+myImage.indexArray.large)">
<img class="object-fill " style="width: 80px;height: 60px"
:src="'http://127.0.0.1:8000/'+myImage.indexArray.large"
:alt="myImage.alt">
</div>
</div>
</div>
<!-- end of little pic-->
<!-- pic-->
<div v-if="image" class="md:col-span-6 col-span-12 w-100 w-full max-w-full">
<img class=""
:src="image"
:alt="image.alt">
</div>
<div v-else class="md:col-span-6 col-span-12 ">
<img class="object-fill"
:src="'http://127.0.0.1:8000/'+product.image[0].indexArray.large"
alt="">
</div>
<!--end of pic-->
<div class="col-span-12 md:hidden">
<div class="cursor-pointer overflow-x-scroll">
<div class=" mb-3 inline py-1 " v-for="(myImage , index) in product.image" :key="index" @click="switchImage(index)">
<img class="object-fill inline p-1 overflow-x-scroll" style="width: 80px;height: 60px"
:src="myImage.url"
:alt="myImage.alt">
</div>
</div>
</div>
<!-- details-->
<div class="col-span-12 md:col-span-4">
<div class="flex justify-between border-b border-amber-200 p-1 mb-4">
<p> نام محصول :</p>
<p>{{ product.name }}</p>
</div>
<div class="flex justify-between border-b border-amber-200 p-1 mb-4">
<p> کشور :</p>
<p>{{ product.country }}</p>
</div>
<div class="flex justify-between border-b border-amber-200 p-1 mb-4">
<p> جنس :</p>
<p>{{ product.material }}</p>
</div>
<div class="flex justify-between border-b border-amber-200 p-1 mb-4">
<p> سن :</p>
<p>{{ product.age }}</p>
</div>
<div class="flex justify-between border-b border-amber-200 p-1 mb-4">
<p> رنگ :</p>
<p>{{ product.color }}</p>
</div>
<div class="flex justify-between border-b border-amber-200 p-1 mb-4">
<p> وزن :</p>
<p>{{ product.weight }}</p>
</div>
<div class="flex justify-between border-b border-amber-200 p-1 mb-4">
<p> طول :</p>
<p>{{ product.length }}</p>
</div>
<div class="flex justify-between border-b border-amber-200 p-1 mb-4">
<p> عرض :</p>
<p>{{ product.width }}</p>
</div>
<div class="flex justify-between border-b border-amber-200 p-1 mb-4">
<p> ارتفاع :</p>
<p>{{ product.height }}</p>
</div>
<div class="flex justify-between border-b border-amber-200 p-1 mb-4">
<p> قیمت :</p>
<p>{{ product.price }}</p>
</div>
</div>
<!-- end of details-->
</section>
<div class="p-3 mb-7" style="background-color:beige;">
<ul class="flex flex-row md:space-x-6">
<li class="block py-2 pr-4 pl-3 text-black">
توضیحات
</li>
</ul>
</div>
<div class="mb-5 mx-auto whitespace-normal p-1 border-b border-amber-100-200 ">
<div v-html="product.description"></div>
</div>
<div class="mb-7">
<span class="block mb-4"> برچسب ها : </span>
<a v-for="(tags , index) in product.tags.split(',')" :title="tags" :key="index"
class="rounded-md text-sm" style="margin: 3px" rel="tag"
href="">{{ tags }} / </a>
</div>
</div>
</template>
<script>
export default {
data() {
return {
image: null,
}
},
methods: {
switchImage(index) {
this.image = index;
},
},
}
</script>
最佳答案
我找到了解决方案我必须在 useFetch 中添加一个参数
const {data: productData, pending, refresh, error} = await useFetch(`http://127.0.0.1:8000/api/products/${slug}` , { initialCache: false })
因为 api 缓存并且不发送另一个请求所以 initialCache : false
它会发送另一个请求这种方式适用于主要产品,但在产品/[slug] 或博客/[slug] 中我认为你必须这样做,如果你有更好的方法请给我评论
关于vue.js - Nuxt 3 动态页面更改 Url 但它不会更改内容并且只获取一次数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73203265/
我从这里复制了一些文件:https://codesandbox.io/s/github/nuxt/nuxt.js/tree/dev/examples/custom-loading?from-embed
我已经在整个互联网上搜索了我的问题的答案。到目前为止没有运气。 我想要达到的目标: 我有一个在通用模式下运行的 Nuxt 应用程序。它类似于一个小型社交网络,用户可以在其中创建自己的个人资料并分享他们
在我的 nuxt 应用程序中,嵌套目录中的组件不会按预期自动导入。对于我的一些组件,我有如下内容:vue 2.6.12 , nuxt 2.15.0components\目录结构 TopArea\ --
我有点困惑,因为在官方 nuxt 网站上它说当前的 nuxt 版本是 2.5.X 但是当我使用 npx create-nuxt-app 创建 nuxt 应用程序时并检查 package.json在依赖
我有survey-vue(surveyJS)在dev上运行良好,但是当我尝试部署时,登陆带有调查组件的页面时出现最大调用堆栈大小超出错误。 我在想这就是我导入插件的方式,但我不确定。 插件/surve
我有如下路径 路径:'/board/:type(\d{2}):subtype(\d{2}):id(\d+)' 所以这是这样的 http://localhost:3000/board/112233333
我构建多应用 Nuxt 项目,这些应用之间不直接通信。每个应用程序都有自己的商店,我想为共享商店使用一个目录。我将这种方法用于组件并且效果很好。 |-> app1 | |-> store // s
将我的 nuxt-cli 版本升级到 2.15.3 后,我注意到页面 block 的大小减小了,所有 node_modules 安装的包现在都被捆绑到现在变得越来越大的 app.js 中。 在下面你可
我正在使用 nuxt 生成完整的静态 Web 应用程序,如下所述 https://nuxtjs.org/blog/going-full-static/#crazy-fast-static-applic
我已经看到很多与此主题相关的问题。但是他们都没有解决我的问题。 我有一个情况,我必须检查 innerWidth窗口,使用 isMobile 检查设备是否可移动多变的。 ...
我在最新版本的 Vuetify 中使用 NuxtJs。 在我的导航栏中有一个通向主页的主页按钮,这是它的代码: mdi-home 只要我在主页上,图标就会悬停: 一旦
我有一个登录页面,我希望登录的用户无法看到。我的组件如下: ... ... @Component({ layout: 'fullWidth', auth: '
我正在创建一个插件,它将发出由套接字触发的基本 nuxt 事件。然后将收到 nuxt 事件并打开一个 snackbar 。在组件内部时,使用 $nuxt 可以轻松发送和接收事件。 this.$nuxt
我有一个Composable,它返回一个函数,在5秒的间隔内验证身份验证和刷新令牌。两者都利用Nuxt的useCookie实用程序函数来执行其背后的逻辑。。起初,它是有效的。但有时,当令牌到期时,它会
我不能在这里使用 window.location,因为它是 SSR 应用程序。useRouter、useRoute 和 useNuxtApp 也没有域名。nuxtApp.ssrContext 未定义。
我在 nuxt.js 上有前端服务器,在带有 django-rest-framework 的 django 中有后端。谁能给我一个使用 nuxt-auth 本地策略刷新 jwt token 的例子?我
有很多关于 Nuxt SSR 或全静态的信息,但我找不到任何指南如何构建具有静态页面的混合 SSR。 我正在使用 Nuxt SSR 构建一个网站,我想从一个 10MB 的 JSON 文件静态预渲染所有
我在本地构建了nuxt js的项目,即npm run build,然后将项目推送到.nuxt文件夹,而不是node_modules文件夹。然后运行npm run start命令,失败。 输出信息:sh
我有一个 NUXT 项目,我正在尝试添加 301 重定向。我尝试了几种不同的方法,但没有任何效果。如果我转到旧 URL,我会得到一个 404 页面。 向 Nuxt 项目添加重定向的最佳方式是什么? 任
我正在使用 Nuxt Content存储应用程序内容(JSON 文件)。它在热重载的开发模式下工作很酷。我网站的后端更改内容文件夹中的任何文件,并且这会立即在浏览器中更改而无需重新加载页面。但在生产模
我是一名优秀的程序员,十分优秀!