メニューを作成する必要があります。メニューは、get要求で受け取ったオブジェクトによって定義されます(すべてがアプリケーションのバックエンドを通して動的に実行されます)。get要求によるレデューサーの作成
オブジェクトは、次のような形式があります:私がやりたい何
[
{
id: "Option1",
subtopics:[
{
id: "Option 1-1",
subtopics: [
{
title: "Option 1-1-1"
},
{
title: "Option 1-1-2"
}
]
},
{
id: "Option 1-2",
subtopics: [
{
title: "Option 1-2-1"
},
{
title: "Option 1-2-2"
}
]
},
]
},
{
id: "Option2",
subtopics:[
{
id: "Option 2-1",
subtopics: [
{
title: "Option 2-1-1"
},
{
title: "Option 2-1-2"
}
]
},
{
id: "Option 2-2",
subtopics: [
{
title: "Option 2-2-1"
}
]
},
]
}
]
をのみオプション1およびオプション2に表示してメニューを表示することです。オプション1をクリックすると、すべてのサブトピックが表示され、サブトピックをクリックすると、すべてのサブトピックが表示されます。 (これはツリーメニューの形式で)
これについてかなり考えた後、私はこれを行う唯一の方法はReduxを使うことだと感じています。しかし、私は本当にここからどこに行くか分からない。
それが今であるので、私はセットアップに減速におけるこのオブジェクトのGETリクエストを試してみましたが、私は次のエラーを取得しています:ここで
Error: Reducer "topic" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined.
は私の減速のための現在のコードです:
export default function(){
const request = axios.get(theUrl)
.then(function(response){
return response.data; //the entire object array
})
}
実際に呼び出されているURLが有効であることを覚えておいて、私はアプリの他の部分でそれをテストしました。
質問に追加すると思いますが、私はこれを正しい方法で行っていますか?そうでない場合、どのように私は動的にこのメニューを生成し、それぞれのメイントピックをクリックして 'メニューツリー'を作ることができますか?
ありがとうございます! API呼び出しが完了取得するとき
_「これを行う唯一の方法はReduxを使用することです」_ほとんど決してありません。 Reduxは、調整する複雑なアクションがたくさんあるときに役立ちますが、このような単純なアクションでは 'setState'よりも優れていません。 – joews
そして私はあなたがレデューサーを誤解していると思います。レデューサーは、アプリの現在の状態とアクションを取り、新しい状態を返す_pure関数_です(AJAXはありません)。あなたはそれを直接呼び出すことはありません。あなたはアクションをディスパッチし、Reduxはあなたのために減速機を呼び出します。 – joews
@joewsおっと!そして、私はこれについてどうやってやっているのか、明らかに間違っていました。しかし、減速家ではない場合、どのように世界でこのメニューツリーをコンポーネントと一緒に作ることができますか? – theJuls