Liquid、JavaScriptなどに関する質問
お世話になります。
現在 hydrogen をつかってカスタムフロントショップの実装を進めており、cart attribute の値を利用して特定のコンポーネントの表示を切り替えるような実装をしたいと考えています。
下記ドキュメントのにあるように `useCart` を使って cart attribute の値を取得し制御を行おうと思ったのですが `Expected a Cart Context, but no Cart Context was found` というエラーが発生してしまいました。
https://shopify.dev/api/hydrogen/hooks/cart/usecart
上記の制御はサーバーサイドコンポーネントから呼び出される処理の中で行おうとしていましたが、下記ドキュメントよりカート情報の利用はクライアントサイド限定であると理解しました。
https://shopify.dev/custom-storefronts/hydrogen/framework/work-with-rsc#using-context-in-react-serve...
上記について、なにかご存知でしたらご教示いただきたいです。
また、cart attribute を利用する理由は `顧客アカウントでのログイン状態にかかわらず、閲覧者に対してステータスを持たせる` ためで、そういう意味では cookie でも似たようなことができると考えています。(cookie もサーバーサイドから参照できないはずなので同じ問題が発生するのですが。。)
もし cart attribute 以外でも似たようなことができそうでしたら、そちらについてもご教示いただけると幸いです。
よろしくお願いいたします。
Hydrogen に搭載されている `useCart` などの hook 機能を参考に下記のようなコードで `useCookie.server` を作成したところサーバーサイドで cookie を読み取ることができ `顧客アカウントでのログイン状態にかかわらず、閲覧者に対してステータスを持たせる` という要件を満たすことができたのですが、こちらを使用するとページのレンダリングが終わらなくなってしまいました。
import React, { useContext } from 'react';
type UseCookieProps = {
cookie: { [key in string]: string };
};
const DEFAULT = {
cookie: {},
};
const context = React.createContext(DEFAULT);
export const CookieProvider = ({
cookie,
children,
}: {
cookie: Map<string, string>;
children: React.ReactNode;
}) => {
return (
<context.Provider
value={{
cookie: Object.fromEntries(cookie.entries()),
}}
>
{children}
</context.Provider>
);
};
export const useCookie = (): UseCookieProps => useContext(context);
`useCookie.server` を `useCookie.client` に変更してみたところ正常に画面が表示されるようになるのですが、クライアント側の処理ですとサーバーサイド側のコンポーネントの表示を制御することができません。
サーバーサイドコンポーネントの中で上記コードの `useCookie` を実行すると、問題なく cookie の値は取れるのですが `Warning: Only ServerContext is supported in Flight` という警告が発生します。
何かいい方法をご存知でしたらご教示いただきたいです。
よろしくお願いいたします。
Shopifyの請求書の支払いが失敗したという通知を受け取って驚いたことはありますか。初めての支払いでエラーが発生したり、これまで何の問題もなく支払いできていたのに突然失敗し...
By Minami_ Sep 8, 20242023年2月、Shopifyはcheckout.liquidを廃止し、Checkout Extensibilityに移行することを発表いたしました。この新しいチェックアウト...
By JasonH Aug 15, 2024「味噌の可能性を、とき放つ」をコンセプトに、豊かな自然に恵まれた信州で味噌の製造販売を行う新田醸造。江戸末期に創業した老舗のみそ屋さんですが、2024年春、顧客層や販売範囲の...
By Minami_ Jul 30, 2024