小道具をモーダルコンポーネントに渡した後、オブジェクト内の配列にアクセスできません

ロボゾンビ

RestCountries Apiを使用してこのアプリケーションを構築し、グリッド上に基本的な詳細を各国に表示できるようにします。各ボックスをクリックすると、アプリはより詳細な情報を含むモーダルを表示します。これが私のコードです。

class App extends React.Component{
  constructor (props){
    super (props);
    this.state={
      countries : [],
      clickedCountry: {},
      modalOn : false,


    }
  }



  componentDidMount(){
    axios.get(`https://restcountries.eu/rest/v2/all`)
    .then(res => {
      const data = res.data;


      this.setState({
        countries : data

      })


      let countries = this.state.countries
      console.log(countries);

       })



  }


  showInfo = (name) => {
    this.setState({
      clickedCountry : this.state.countries.find(it => it.name===name),
      modalOn : true

    });   
  }



  closeModal =()=>{
    this.setState({
      modalOn : false
    })
  }



  render() {
    return (
      <div  className="container">
      {this.state.countries.map(country=>
 <Country name={country.name}
                 key={country.name} 
                 population ={country.population} 
                 region={country.region}
                 capital={country.capital}
                 flag={country.flag}
                 showInfo={this.showInfo}
                 languages={country.languages}
                 />

      )}
      <div style={{display: this.state.modalOn? "block" : "none"}}>
        <Modal closeModal={this.closeModal} 
               name={this.state.clickedCountry.name} 
               population={this.state.clickedCountry.population}
               region={this.state.clickedCountry.region}
               capital ={this.state.clickedCountry.capital}
               flag={this.state.clickedCountry.flag}
               nativeName ={this.state.clickedCountry.nativeName}
               subregion={this.state.clickedCountry.subregion}
               topLevelDomain={this.state.clickedCountry.topLevelDomain}
               languages={this.state.clickedCountry.languages}
              />
      </div>

      </div>
    )
  }
}

モーダルコンポーネント:

const Modal = ({closeModal, name, population, region, capital, flag, languages, nativeName, subregion, topLevelDomain, currencies}) => {
    return (
        <div className="modal">
            <div className="modal-content">
                <span onClick={closeModal}>x</span>
            <div className="img">
               <img src={flag}/>
               </div> 
            <p>{name}</p>
            <p>Native name: {nativeName}</p>
            <p>population: {population}</p>
            <p>Region: {region}</p>
            <p>Sub Region: {subregion}</p>
            <p>Top level domain: {topLevelDomain}</p>
            <p>Capital: {capital}</p>

            </div>
            </div>

    )
}

これまでのところ、私は各国をマッピングしており、クリック時のモーダルはより詳細な情報を示しています。問題は、オブジェクト内にネストされている配列にAPIでアクセスする必要があるという事実です。

area: 91
gini: null
timezones: ["UTC-04:00"]
borders: []
nativeName: "Anguilla"
numericCode: "660"
currencies: [{…}]
languages: [{…}]
translations: {de: "Anguilla", es: "Anguilla", fr: "Anguilla", ja: "アンギラ", it: "Anguilla", …}
flag: "https://restcountri

言語配列にアクセスする必要があります。これで、countryコンポーネント内の言語をマップしようとすると、情報を表示できます。しかし、モーダルコンポーネントでのみ言語を表示したいので、モーダルを担当するclickedCountry状態をマップすると、「言語」が未定義であるというエラーが表示されます。同じオブジェクトがfind関数でフィルタリングされた場合はどうなりますか?私が明確な人であったことを願っています、乾杯。

アレックス

何が起こったのか理解できたと思います!これをモーダルコンポーネントに追加するだけです

<ul>
{
languages && languages.map(lan=> {return <li>{lan.name}</li>} )
 }
</ul>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

スタイル付きコンポーネントオブジェクトからページに小道具をレンダリングできません

分類Dev

子コンポーネントに渡された小道具にアクセスできません

分類Dev

オブジェクトの配列を小道具としてコンポーネントに渡し、配列のメンバーを小道具としてネストされたコンポーネントに渡すにはどうすればよいですか?

分類Dev

Reactコンポーネント内のJavascriptオブジェクトにアクセスできません

分類Dev

変更をレンダリングせずに、ルートコンポーネントから小道具として渡されたオブジェクト

分類Dev

Reactコンポーネント内の関数から小道具にアクセスできません

分類Dev

オブジェクトの配列を含む小道具は子コンポーネントで読み取ることができません

分類Dev

Reactのコンポーネントの小道具から履歴にアクセスできませんか?

分類Dev

Angular:コンポーネントのHTMLページにHttpRespnseから受信したオブジェクトの配列を表示できません

分類Dev

小道具を使用してプレーンテキストまたは配列でオブジェクトパスにアクセスする

分類Dev

mapDispatchAsPropsを単純なactionCreatorsオブジェクトとして定義すると、小道具がコンポーネントに渡されません

分類Dev

Vuejs:オブジェクトを小道具として渡し、コンポーネントにサブオブジェクトを更新させる方法

分類Dev

オブジェクト変数のフィールドにアクセスして、その子コンポーネントに小道具として渡すにはどうすればよいですか?

分類Dev

小道具としてコンポーネントに渡されたデータ属性を持つオブジェクトは、Vueによってケバブケースに入れられません

分類Dev

コンポーネントの小道具にアクセスする場合、状態を小道具にマッピングした後、「this」は未定義です。

分類Dev

TypeScriptでテーマオブジェクトにインデックスを付けるために小道具を使用してスタイル付きコンポーネントに条件付きで属性を設定しますか?

分類Dev

機能コンポーネントから小道具にアクセスできません

分類Dev

vueで小道具を使用して親コンポーネントから子コンポーネントにaxios応答オブジェクトを渡す方法

分類Dev

オブジェクトを状態から小道具として子コンポーネントに渡す

分類Dev

バニラJSオブジェクトを小道具として子コンポーネントに渡す

分類Dev

ReactJS:ユーザーオブジェクトを小道具としてコンポーネントに渡すと、その値が未定義になります

分類Dev

オブジェクトの配列からv-forを介して作成されたvueコンポーネントにアクセスします

分類Dev

Angularjs-コントローラーの配列にプッシュされたオブジェクトにアクセスできません

分類Dev

フロー:機能的な反応コンポーネントにデフォルトの小道具を使用する場合、「未定義の[1]を使用して計算されたプロパティにアクセスできません」

分類Dev

ジェネリックスのポリモーフィズム-継承されたオブジェクトを渡すときのコンパイルエラー(暗黙的に型を変換できません)

分類Dev

ReactJS:オブジェクトの大規模な配列を小道具として子コンポーネントの多くのレベルに渡す必要がありますか?

分類Dev

オブジェクト内の配列内のネストされたオブジェクトにアクセスできません

分類Dev

オブジェクトを小道具としてVUEで生成されたWebコンポーネントに渡す方法

分類Dev

コンポーネント内の小道具にアクセスできないのはなぜですか?

Related 関連記事

  1. 1

    スタイル付きコンポーネントオブジェクトからページに小道具をレンダリングできません

  2. 2

    子コンポーネントに渡された小道具にアクセスできません

  3. 3

    オブジェクトの配列を小道具としてコンポーネントに渡し、配列のメンバーを小道具としてネストされたコンポーネントに渡すにはどうすればよいですか?

  4. 4

    Reactコンポーネント内のJavascriptオブジェクトにアクセスできません

  5. 5

    変更をレンダリングせずに、ルートコンポーネントから小道具として渡されたオブジェクト

  6. 6

    Reactコンポーネント内の関数から小道具にアクセスできません

  7. 7

    オブジェクトの配列を含む小道具は子コンポーネントで読み取ることができません

  8. 8

    Reactのコンポーネントの小道具から履歴にアクセスできませんか?

  9. 9

    Angular:コンポーネントのHTMLページにHttpRespnseから受信したオブジェクトの配列を表示できません

  10. 10

    小道具を使用してプレーンテキストまたは配列でオブジェクトパスにアクセスする

  11. 11

    mapDispatchAsPropsを単純なactionCreatorsオブジェクトとして定義すると、小道具がコンポーネントに渡されません

  12. 12

    Vuejs:オブジェクトを小道具として渡し、コンポーネントにサブオブジェクトを更新させる方法

  13. 13

    オブジェクト変数のフィールドにアクセスして、その子コンポーネントに小道具として渡すにはどうすればよいですか?

  14. 14

    小道具としてコンポーネントに渡されたデータ属性を持つオブジェクトは、Vueによってケバブケースに入れられません

  15. 15

    コンポーネントの小道具にアクセスする場合、状態を小道具にマッピングした後、「this」は未定義です。

  16. 16

    TypeScriptでテーマオブジェクトにインデックスを付けるために小道具を使用してスタイル付きコンポーネントに条件付きで属性を設定しますか?

  17. 17

    機能コンポーネントから小道具にアクセスできません

  18. 18

    vueで小道具を使用して親コンポーネントから子コンポーネントにaxios応答オブジェクトを渡す方法

  19. 19

    オブジェクトを状態から小道具として子コンポーネントに渡す

  20. 20

    バニラJSオブジェクトを小道具として子コンポーネントに渡す

  21. 21

    ReactJS:ユーザーオブジェクトを小道具としてコンポーネントに渡すと、その値が未定義になります

  22. 22

    オブジェクトの配列からv-forを介して作成されたvueコンポーネントにアクセスします

  23. 23

    Angularjs-コントローラーの配列にプッシュされたオブジェクトにアクセスできません

  24. 24

    フロー:機能的な反応コンポーネントにデフォルトの小道具を使用する場合、「未定義の[1]を使用して計算されたプロパティにアクセスできません」

  25. 25

    ジェネリックスのポリモーフィズム-継承されたオブジェクトを渡すときのコンパイルエラー(暗黙的に型を変換できません)

  26. 26

    ReactJS:オブジェクトの大規模な配列を小道具として子コンポーネントの多くのレベルに渡す必要がありますか?

  27. 27

    オブジェクト内の配列内のネストされたオブジェクトにアクセスできません

  28. 28

    オブジェクトを小道具としてVUEで生成されたWebコンポーネントに渡す方法

  29. 29

    コンポーネント内の小道具にアクセスできないのはなぜですか?

ホットタグ

アーカイブ