0

に依存する npm パッケージを作成しています:

"peerDependencies": {
  "react": "15.4.1",
},
"dependencies": {
  "classnames": "2.2.5",
  "react-onclickoutside": "5.8.3",
  "styled-components": "1.1.2"
}

それらをピアの依存関係として追加しました。

webpack ビルドを作成し、アプリケーションにインポートする 'umd' モジュールを生成しました。

問題は、react-onclickoutside に依存するモジュールのコンポーネントが、2 つのReact の存在について不平を言うことです。

これは、切り替えてこのエラーを生成できるコードです。

DropDown = onClickOutside(DropDown, {
  handleClickOutside(instance) {
    return instance.closeMenu;
  },
});

これにより、次のエラーが発生します。

Error: Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component's `render` method, or you have multiple copies of React loaded (details: ....).(…)

UMD モジュールを見ると、ピアの依存関係がバンドルされていることがわかります。これがおそらく、アプリケーションに 2 つの React がある理由です。

モジュールに React がバンドルされないようにする方法を教えてください。

4

1 に答える 1