我正在使用Next.js和GraphQL进行Shopify POC。
我有一个组件,显示产品列表,其中包含指向产品页面的链接。
<Link
as={`${handle}/product/${url}`}
href={`/product?id=${item.id};`}>
<a>{item.title}</a>
</Link>
“handle”是集合的名称,因此在浏览器中的URL看起来像http://localhost:3000/new-releases/product/Plattan-2-Bluetooth,但实际上它只是使用名为“products”的页面,并传递产品ID。
现在,在product.js(下面粘贴)中,我正在获取ID的查询字符串值并执行另一个查询以获取产品。一切正常,但是如果我刷新或将URL复制并粘贴到新窗口中,我会得到404错误。
我知道这与路由有关,但我不确定需要做什么来解决这个问题。谢谢
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Query } from 'react-apollo';
import gql from 'graphql-tag';
class product extends Component {
static async getInitialProps({query}) {
console.log("query", query)
return query ? { id: query.id.replace(';', '') } : {}
}
render() {
const PRODUCT_FRAGMENT = gql`
fragment ProductPage on Product {
title
description
descriptionHtml
id
images(first: 10, maxWidth: 600) {
edges {
node {
id
altText
originalSrc
}
}
}
}
`;
const PRODUCT_FETCH_QUERY = gql`
query PRODUCT_FETCH_QUERY {
node(id: "${this.props.id}") {
__typename
...ProductPage
}
}
${PRODUCT_FRAGMENT}
`;
return (
<div>
<Query query={PRODUCT_FETCH_QUERY}>
{({ data, error, loading }) => {
console.log("data", data)
if (loading) return <p>Loading...</p>
if (error) return <p>Error: {error.message}</p>
return null}
}
</Query>
</div>
);
}
}
product.propTypes = {
};
export default product;
exportTrailingSlash
已更名为trailingSlash
。 - jesseSpencerrouter.reload(window.location.pathname)
。 - Deep Kakkar