I以下のモジュールの構造を有する:インポートされたモジュールに、「循環」依存関係を持つファイルの最上位レベルのスコープにアクセスしますか?
/components
├── Button.js
├── Checkbox.js
├── index.js
├── DateSelect
├── DateSelect.js
└── index.js
/components/DateSelect/index.js
付:
import DateSelect from './DateSelect';
export default DateSelect;
/components/index.js
:
import DateSelect from './DateSelect';
import Button from './Button';
import Checkbox from './Checkbox';
export {
DateSelect,
Button,
Checkbox,
};
そして/components/DateSelect/DateSelect.js
:
import { Checkbox } from '../';
// ...code
// I want to do this!
const MyCustomCheckbox = props => <Checkbox style={someStyle} />;
// ...code
class DateSelect extends React.Component {
// code
}
export default DateSelect;
を
ここでは、上記のコードのようにファイルの最上位レベルのCheckbox
にアクセスしたいと思いますが、undefined
となります。しかし、私がこの変数にアクセスすると、DateSelect
のrender
メソッドでは、期待どおりに動作します。
私はこれがどういう場合であるか、またはこれを修正する方法について完全にはわかりません(import Checkbox from '../Checkbox'
を実行できますが、ディレクトリのindex.js
ファイルを使用するパターンを変更したくありません)。私はまた、何が起こっているのか正確に理解したい。何か案は?
なぜ 'Checkbox.js'はDateselect.js''に依存していますか?あなたはそのコードを投稿できますか? – Bergi
@Bergi @Bergi確かに、私のコンピュータにアクセスするのに数分を要しますが、チェックボックスはDateSelectに依存しません。私が話した循環依存性はDateSelect.jsとcomponents/index.jsの間であり、 – YoTengoUnLCD
さて、それは順番に 'Checkbox'をインポートされた' Dateselect'に依存させます。 [そのような循環参照を避ける](https://stackoverflow.com/a/46593566/1048572)! 'Button'モジュールを直接インポートするだけです。 – Bergi