开发者问题收集

无法在React和API中读取未定义的属性“地图”

2019-11-02
92

我对 React 还很陌生,我正尝试从 food2fork api 中引入数据,但出现了错误

TypeError: Cannot read property 'map' of undefined

如果我 撤消此代码 ,则错误为零。此代码是 主要 发生错误的地方

{recipes.map (recipe => {
    return <Recipe key={recipe.recipe_id} recipe={recipe}
    />;
  })}

RecipeList.js 的完整页面

import React, { Component } from 'react';
import Recipe from './Recipe';
import RecipeSearch from './RecipeSearch';

export default class RecipeList extends Component {
    render() {
        const { recipes } = this.props;
        return (
            <React.Fragment>
                <RecipeSearch />
                <h1>Recipe List</h1>
                <div className="container my-5">
                    {/* title */}
                    <div className="row">
                        <div className="col-10 mx-auto col-md-6 text-center text-uppercase mb-3">
                            <h1 className="text-slanted">Recipe List</h1> 
                        </div>
                    </div>
                    {/* end title */}
                    <div className="row">
                        {recipes.map (recipe => {
                            return <Recipe key={recipe.recipe_id} recipe={recipe}
                            />;
                        })}
                    </div>
                </div>

                <Recipe />
            </React.Fragment>
        );
    }
}

App.js 中:

render(){
    console.log(this.state.recipes);

    return (
      <React.Fragment>
        <RecipeList />
        <RecipeDetails />
      </React.Fragment>
    );
 }
2个回答

我认为您将食谱数据保存在 App.js 中的 this.state.recipes

您需要将其作为道具传递给 <RecipeList 组件以在那里将其用作道具。

因此,在您的 App.js 中只需执行以下操作

render(){
  console.log(this.state.recipes);

  return (
    <React.Fragment>
      <RecipeList recipes={this.state.recipes}  />
      <RecipeDetails />
    </React.Fragment>
  );
}
Atin Singh
2019-11-02

首先,您没有将任何道具传递给食谱家。
在app.js

687888232

中更改此信息 更改:

482033970

to:

460140153
Nicolas Hevia
2019-11-02