【发布时间】:2020-07-16 22:06:15
【问题描述】:
仍然习惯 React 并正确使用道具。
但基本上我有这个反应组件,我试图获取“drinkInfo”中的所有信息并使用道具将它们全部发送到 CardInfo 组件,以便我可以在那里呈现它。然而我得到“道具未定义”,我不确定为什么。
class Render extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
// call the drinks endpoint (via axios)
let options = {
method: 'GET',
url: MYURL,
};
// let drinks = array of drinks
let drinksFromDatabase = [];
// axios request
axios.request(options)
.then( (response) => {
console.log(response);
drinksFromDatabase = response.data
console.log("Drinks from Database are:")
console.log(drinksFromDatabase)
this.setState({ drinks : drinksFromDatabase})
})
.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 nthing")
return <div></div>
}
let firstElement = stateArray[0];
let drinks = firstElement.drinks;
let drinkChoice = this.props.reduxState.drinkChoice
console.log("Drink Choice is: " , drinkChoice)
let drinkInfo = {
type: props.drinks.type,
name: props.drinks.name,
manufacturer: props.drinks.manufacturer,
rating: props.drinks.rating,
date: props.drinks.date,
description: props.drinks.description,
favorite: props.drinks.favorite
}
console.log("Drink info is: " , drinkInfo)
let cardComponents = drinks.map((drink) =>{
if (drink.type === drinkChoice) {
return (<InfoCard {props.drinkInfo} />)
} else {
return <div>Nothing to Report</div>
}})
return (
<div>
<div>{cardComponents}</div>
</div>
)
}
}
export default Render
【问题讨论】:
-
我认为您在不了解基本 JavaScript 的情况下试图进入非常复杂的领域。变量
props未定义,您尝试定义drinkInfo -
我知道,这个错误告诉了我很多。我正尝试着学习。那你能给我更多的方向吗?谢谢!
-
你需要定义
props,如果你要找的是this.props,像const props = this.props这样的东西会帮你做的 -
我现在明白了。谢谢你。现在它告诉我“props.drinks”是未定义的。但是,如果我控制台日志本身只是“饮料”,我会得到我试图传递的数据。知道为什么将道具放在它前面会使其未定义吗?
标签: reactjs components jsx react-props