に依存する 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 がバンドルされないようにする方法を教えてください。