私は本当に面白い問題を抱えています。状態の中での反応成分の動的負荷
私は現在、ヘッドレスCMSのAdmin-Interfaceに取り組んでおり、さまざまな部品の内容を表示するためにコンポーネントを動的にロードしたいと考えています。
私は、v4からウィットリアクタを達成するのはむしろ簡単だと知っていますが、これを処理してURLをきれいに保つためにRoutesに頼ることは望ましくありません。ここで
は私がしようとしているものです:
- 私はUIの基本的なレイアウトをレンダリングする(ナビゲーションリンクをクリックしたとき、私は 異なるサブコンポーネントをロードする)
- 私は
import()
にしたい、この基本的なレイアウトのasync componentWillMount()
機能内部の部品が理想的には、これらの await import()
を使用してと呼ばれるプロパティの内部状態に保存しなければならないと述べたthis.state.mainComponents
- 私はその後、私はいくつかの異なるアプローチを試してみました
state
両親に現在表示されているコンポーネントを変更する関数と一緒にナビゲーションコンポーネントにコンポーネントの名前を伝承しますが、にそれを得るために管理していませんでした今まで仕事。
これは私が今持っているものです。
async componentDidMount() {
const mainComponents = {
Dashboard: await import('../_mainComponents/Dashboard').then(
({ Dashboard }) => {
return Dashboard;
},
),
};
const componentNames = [];
for (let p in mainComponents) {
componentNames.push(p);
}
this.setState({
mainComponents: {
views: mainComponents,
names: componentNames,
},
currentComponent: mainComponents.Dashboard,
currentTitle: 'Dashboard',
});
}
私は本当にあなたがこの上で私を与えることができる任意のヘルプをいただければ幸いです。
EDIT:
だから私は再びreact-loadable
を実施し、このように私の状態の内側のconstを保存しようとしたモーゼRaguzzini @の答えによると:私はしようとしています
const LoadableDashboard = Loadable({
loader:() => import('../_mainComponents/Dashboard'),
loading: Loading
});
const mainComponents = {
Dashboard: LoadableDashboard
};
そして、私のコンストラクタ関数内出力にTの内部に格納さコンポーネントをしようとしたときにそれが動作していない
const componentNames = [];
for (let p in mainComponents) {
componentNames.push(p);
}
this.state = {
mainComponents: {
views: mainComponents,
names: componentNames,
},
currentComponent: null,
currentTitle: null,
loading: false,
};
:このような状態にこのオブジェクトを渡します彼はthis.state.mainComponents.views
オブジェクトをレンダー機能の内側に配置します。 <Dashboard />
を使用している場合
期待どおりに動作しているが、これは、私は大規模なswitch ... case
でレンダリング機能にすべてのコンポーネントを追加したくないので、私はここで達成しようとしているものではありません。
私はこれをどのように達成できるか考えている人はいますか?
まあ、私はそれだけでした。私がそこで行方不明になっていることは、それらのコンポーネントを私の州の中に保管する可能性です。私の実装中にsthが間違っていた可能性もありますが、もう一度試してみます。あなたのご意見ありがとうございます。 –
開発者の意図(制約ではありません)では、状態は直列化可能でなければならないため、単純なオブジェクトのみを格納する方がよいでしょう。 さらに、ロード可能にはプリロードやプリロードのトリガなどの素晴らしい機能があります(IE:ボタンをホバーしている間にコンポーネントをプリロードする) –
ロード可能なドキュメントを掘り下げて、非常に便利です。私はアプリケーションを微調整するために、より具体的なコンポーネントのいくつかを試してみます。そのチップをありがとう。 –