NextJSのコンポーネントページからのインポートを理解する

マガモ

Next.JSフレームワークを初めて使用し、コンポーネントページからデータをインポートするロジックを完全には理解していません。たとえば、componentsフォルダーにexample.jsのようなページを作成しました。ここでは、データをグラフにプルするAPIを実行しています。次に、グラフを表示したいindex.jsファイル内で、example.js内でAPI関数がトリガーされていないため、「未処理のランタイムエラー」が発生します。

これは私が/pages/index.jsのページをインポートする方法です:

import dynamic from 'next/dynamic'
const Example = dynamic(() => import('../pages/example.js'))


//Later on inside of my return

  <Example />

そして、example.jsページから次のようにエクスポートしています。

function Example(props) {
return <div>
... my code
}

その下に、example.js内に次のものがあります。

export default Example

getStaticProps関数が続きます:

export async function getStaticProps() {

  const res = await fetch("")

  const data = await res.json()


  if (!data) {
    return {
      notFound: true
    }
  }
  return {
    props: {
      data: data.reverse(),
    },
  }
}

index.jsでこの正確なコードを使用すると、正しく機能します。これが実行されない理由に関するアイデア、および修正に関する解決策はありますか?

わかりやすくするために編集: getStaticProps関数はexample.jsファイルにありますが、問題はトリガーされないことです。

bmdev

Next.jsは、サーバー側のレンダリング、静的サイトの生成、コード分割を処理するために多くの魔法を実行し、すべてを/pagesフォルダー内から実行します。/pagesフォルダ内のコンポーネントは、通常のReactコンポーネントとは少し異なる動作をすることを知っておくことが重要です。ここにあなたの問題を解決するべきあなたのためのいくつかの秘訣があります。

1.ページコンポーネントを/pagesフォルダー内に配置します。

このフォルダー内のコンポーネントは、名前付きエクスポート(のような追加のNext.js固有の関数getStaticPropsとともに、デフォルトのエクスポート(コンポーネント)を持つことができますNext.jsは、エクスポートされた関数を見つけると、それらを実行します。

2.next/dynamic動的インポートにのみ使用します。

動的インポートは遅延読み込みされます。これは、Next.jsの自動コード分割と、場合によってはサーバー側のレンダリングに影響します。正確な内部動作はわかりませんが、私の推測では、Pageコンポーネント(Nextで特別なもの)を動的にロードすることが、おそらく問題を引き起こしています。SSRを壊すサードパーティコンポーネントがある場合にのみ動的インポートを使用する傾向があるため、サーバー側でレンダリングされないように動的にインポートする必要があります。


これを処理する最も簡単な方法はおそらく次のとおりです。

/pages/index.js

import Example from '../path/to/example';

export default (props) => (
  <div>
    <p>My page component</p>
    <Example />
  </div>
);

export async function getStaticProps() {
    return {
        props: {
            data: // ...
        }
    };
}

上記のこのソリューションでは、動的インポート使用できます。重要なのは、Next.js固有の関数をファイルから/pagesすぐにエクスポートすることです

/pages/index.js

import dynamic from 'next/dynamic';

const Example = dynamic(() => import('../components/example'));

export default (props) => (
  <div>
    <p>My page component</p>
    <Example />
  </div>
);

export async function getStaticProps() {
    return {
        props: {
            data: // ...
        }
    };
}

「getStaticProps関数がexample.jsファイルにあり、問題がトリガーされない」を解決するための更新:

Next.jsはgetStaticProps/pagesディレクトリ内のファイルからエクスポートされた関数のみを呼び出しますgetStaticProps別のディレクトリからメソッドを定義する場合は、それを行うことができますが、次のようにメソッドをインポートして/pagesから再エクスポートする必要があります

/components/example.js

export default () => (
 // ... component ...
);

export function getStaticProps() {
 // ... function ...
};

とで/pages/index.js

import Example, { getStaticProps } from '../components/example';

export default Example;

export {
  getStaticProps
}

これはうまくいくはずです。ただし、この場合、動的インポートを使用してExampleをインポートすることはできません

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ページからNextjsのコンポーネントに小道具を渡す

分類Dev

あるコンポーネントをモジュールから別のモジュールのコンポーネントにインポートする

分類Dev

あるコンポーネントから他のコンポーネントにイベントを渡す

分類Dev

Ionic2-ページコンポーネントのcssファイルをインポートする方法

分類Dev

ページ/コンポーネントのサービスから同じObservableを共有する

分類Dev

NextJSのコンポーネントからデータをフェッチする

分類Dev

vuejsのコンポーネントからコンポーネントをレンダリングする方法

分類Dev

ionic2のコンポーネントからページを表示する方法

分類Dev

VueJSのコンポーネント小道具を理解する

分類Dev

Meteorのwithtracker()コンポーネントを理解する

分類Dev

Yii2コンポーネントビューからページタイトルを設定する

分類Dev

あるコンポーネント(ページ)から別のコンポーネント(別のページ)への転送

分類Dev

Vueコンポーネントのnode_modulesからcssファイルをインポートする方法

分類Dev

反応の外部/コンポーネントからファイルをインポートする方法

分類Dev

別のOpenAPIファイルからコンポーネントをインポートする方法は?

分類Dev

Reactjsコンポーネントの状態を別のコンポーネントから変更する方法

分類Dev

ReactJSでコンポーネントの状態を別のコンポーネントから更新する

分類Dev

Ionic-別のページまたはコンポーネントからコンポーネントの変数を更新します

分類Dev

あるコンポーネントから別のコンポーネントに値を送信する方法

分類Dev

コンポーネントから別のコンポーネントにJavaScriptをインポートする方法は?

分類Dev

paintComponentで別のコンポーネントをペイントする

分類Dev

ログインコンポーネントからホームページコンポーネントにユーザー名を渡す

分類Dev

コンポーネントをいくつかのページに追加します。エラー| イオン4

分類Dev

angle2の子コンポーネントから親コンポーネントを更新する方法

分類Dev

コンポーネントの外部からvuejsコンポーネントを破棄する方法

分類Dev

Angular2の子コンポーネントから親コンポーネントを更新する方法

分類Dev

reactjsの親コンポーネントから子コンポーネントを強制的に更新する方法

分類Dev

別のコンポーネントからコンポーネントクラス変数を変更する

分類Dev

あるReactコンポーネントから別のReactコンポーネントに状態を渡す

Related 関連記事

  1. 1

    ページからNextjsのコンポーネントに小道具を渡す

  2. 2

    あるコンポーネントをモジュールから別のモジュールのコンポーネントにインポートする

  3. 3

    あるコンポーネントから他のコンポーネントにイベントを渡す

  4. 4

    Ionic2-ページコンポーネントのcssファイルをインポートする方法

  5. 5

    ページ/コンポーネントのサービスから同じObservableを共有する

  6. 6

    NextJSのコンポーネントからデータをフェッチする

  7. 7

    vuejsのコンポーネントからコンポーネントをレンダリングする方法

  8. 8

    ionic2のコンポーネントからページを表示する方法

  9. 9

    VueJSのコンポーネント小道具を理解する

  10. 10

    Meteorのwithtracker()コンポーネントを理解する

  11. 11

    Yii2コンポーネントビューからページタイトルを設定する

  12. 12

    あるコンポーネント(ページ)から別のコンポーネント(別のページ)への転送

  13. 13

    Vueコンポーネントのnode_modulesからcssファイルをインポートする方法

  14. 14

    反応の外部/コンポーネントからファイルをインポートする方法

  15. 15

    別のOpenAPIファイルからコンポーネントをインポートする方法は?

  16. 16

    Reactjsコンポーネントの状態を別のコンポーネントから変更する方法

  17. 17

    ReactJSでコンポーネントの状態を別のコンポーネントから更新する

  18. 18

    Ionic-別のページまたはコンポーネントからコンポーネントの変数を更新します

  19. 19

    あるコンポーネントから別のコンポーネントに値を送信する方法

  20. 20

    コンポーネントから別のコンポーネントにJavaScriptをインポートする方法は?

  21. 21

    paintComponentで別のコンポーネントをペイントする

  22. 22

    ログインコンポーネントからホームページコンポーネントにユーザー名を渡す

  23. 23

    コンポーネントをいくつかのページに追加します。エラー| イオン4

  24. 24

    angle2の子コンポーネントから親コンポーネントを更新する方法

  25. 25

    コンポーネントの外部からvuejsコンポーネントを破棄する方法

  26. 26

    Angular2の子コンポーネントから親コンポーネントを更新する方法

  27. 27

    reactjsの親コンポーネントから子コンポーネントを強制的に更新する方法

  28. 28

    別のコンポーネントからコンポーネントクラス変数を変更する

  29. 29

    あるReactコンポーネントから別のReactコンポーネントに状態を渡す

ホットタグ

アーカイブ