Так что в идеале мой родительский компонент отображает базу данных и отображает их по выбору пользователя. Прямо сейчас, прямо сейчас, информация передается правильно, и приложение отображает то, что мне тоже нужно (компонент карты), в правильном количестве, однако оно полно фиктивной информации. (Кто-то щелкает по пиву, в базе данных есть три типа пива, приложение отображает три карточных компонента с фиктивной информацией).
Вот родительский компонент:
class Render extends React.Component {
constructor(props) {
super(props);
console.log("Here are your props", props);
}
componentDidMount() {
let options = {
method: 'GET',
url: 'http://localhost:8080/drinks',
};
let drinks = [];
console.log("this is",this);
axios.request(options)
.then( (response) => {
console.log(response);
this.setState({ drinks: response.data })
})
.catch(function (error) {
console.log(error);
});
}
render() {
console.log("this.state is",[this.state])
let stateArray = [this.state]
if (stateArray[0] == null) {
console.log("returning with nothing")
return <div></div>
}
let firstElement = stateArray[0];
let drinks = firstElement.drinks;
let drinkChoice = this.props.reduxState.drinkChoice
console.log("drinkchoice is here" , drinkChoice)
// const props = this.props
console.log("just drinks", drinks)
let drinkInfo = {
type: this.state.drinks.type,
name: this.state.drinks.name,
manufacturer: this.state.drinks.manufacturer,
rating: this.state.drinks.rating,
date: this.state.drinks.date,
description: this.state.drinks.description,
favorite: this.state.drinks.favorite
}
let cardComponents = drinks.map((drink) =>{
if (drink.type === drinkChoice) {
return (<InfoCard props={this.state.drinks} />)
} else {
return <div>Nothing to Report</div>
}})
return (
<div>
<div>{cardComponents}</div>
</div>
)
}
}
export default Render
Теперь мне нужно отобразить фактическую информацию базы данных для каждой записи. В child / cardcomponent - я могу console.log реквизит, и он будет правильно показывать правильную информацию. Это проходит. Но всякий раз, когда я пытаюсь быть более конкретным, c (props.name) он становится неопределенным.
Я занимался этим уже несколько дней, и я так растерялся. Информация прямо здесь! Мне просто нужно взять его!
Вот код для компонента ребенок / карта:
const useStyles = makeStyles(theme => ({
root: {
maxWidth: 345,
},
media: {
height: 0,
paddingTop: '56.25%', // 16:9
},
expand: {
transform: 'rotate(0deg)',
marginLeft: 'auto',
transition: theme.transitions.create('transform', {
duration: theme.transitions.duration.shortest,
}),
},
expandOpen: {
transform: 'rotate(180deg)',
},
avatar: {
backgroundColor: red[500],
},
}));
export default function InfoCard(props) {
const classes = useStyles();
if( props.length <= 0 ) {
return (<div></div>);
} else {
console.log("props are here")
console.log( props )
console.log("props dot name")
console.log ( props.name )
}
props.each(function (drink) {
console.log(drink.name);
});
return (
<Card className={classes.root}>
title = { props.name }
</Card>
);
}
Где я ошибся? Я чувствую, что перепробовал каждую возможную итерацию console.log и drink.name. Я в конце своей веревки.
Спасибо за любые советы.
sccreengrab журнала консоли