Не удается прочитать изображение неопределенного в приложении React

#reactjs #react-router

#reactjs #react-маршрутизатор

Вопрос:

Я использую метод filter, чтобы выделить один признанный элемент в массиве и использовать его для отображения его состояния в моем домашнем компоненте. Я использую метод filter в MainComponent, передавая его в домашний компонент, где я хочу, чтобы функциональный компонент AddCard отображался. Я получаю сообщение об ошибке «невозможно прочитать изображение undefined», поэтому я предполагаю, что я делаю что-то не так при передаче своих реквизитов.

MainComponent.js

 class Main extends Component{
    constructor(props){
        super(props);
        this.state={
            whyfastpack: WHYFASTPACK
        };
    }

    render(){

        const LandingPage =()=>{
            return (
                <Landing />
            );
        };

        const HomePage=()=>{
            return (
                <Home   
                    lightweight={this.state.whyfastpack.filter(lightweight => lightweight.featured)[0]}
                />
            );
        };

        return(
            <div>
                <Header />
                <Switch>
                    <Route exact path='/' component={LandingPage} />
                    <Route path ='/home' component={HomePage} />
 

HomeComponent.js

    ...
                            </div>
                            <div className='col-md m-1'>
                                <AddCard />
                            </div>
                        </div>


   ....

function RenderCard({ item }) {
    return (
        <Card>
            <CardImg src={this.image} alt={item.name} />
            <CardBody>
                <CardTitle>{item.name}</CardTitle>
                <CardText>{item.comment}</CardText>
            </CardBody>
        </Card>
    );
}


function AddCard(props) {
    return (
        <div className="container">
            <div className="row">
                <div className="col-md m-1">
                    <RenderCard item={props.lightweight} />
                </div>
            </div>
        </div>
    );
}
 

whyFastPack.js

 export const WHYFASTPACK = [
    {
        id: 0,
        image: 'images/pnw.jpg',
        name: 'Reduce Weight',
        comment: 'Carry only what you need for the day, not a month! With fast-packing you only need to bring enough to get you through each day!',
        featured: true,
    }
]
 

Ответ №1:

Вы забыли передать lightweight prop в AddCard from HomeComponent .

 <div className='col-md m-1'>
  <AddCard lightweight={this.props.lightweight} />
</div>