javascript - Typescript: TypeError אינו מוגדר
אני יחסית חדש ב-Typescript ו-React. ניסיתי ליישם את ספריית ה-npm react-rewards ופתרתי את כל הבעיות חוץ מבעיה אחת.
type Props = {}
class Surprisebutton extends Component<Props>{
reward: any;
render() {
return (
<Reward
ref={(ref) => { this.reward = ref }}
type='memphis'>
<Button onClick={this.reward.rewardMe()} style={styles.button} variant="contained" color="primary">
Surprise!
<FavoriteIcon style={{ marginLeft: 10 }} />
</Button>
</Reward>
)
}
}
לאחר הרצת npm start אני מקבל שגיאה שאומרת TypeError: this.reward הוא לא מוגדר. מה הדרך הטובה ביותר לפתור זאת?
תשובה #1
זה לא קשור ל-TypeScript. TS הוא רק קומפיילר ולינטר ואתה מקבל שגיאת ריצה. זה השורה הזו:
this.reward.rewardMe()
ה-ref מקבל שיוך לאחר שהרכיב מותקן במלואו ו-rewardMe() מנסה לקרוא לו מיד. זו גם טעות משנית. אינך רוצה להשתמש בביצוע () אחרת הפונקציה תתבצע מיד (ולא תפסיק אף פעם).
השורה צריכה להיות
<Button onClick={this.reward.rewardMe} style={styles.button} variant="contained" color="primary">
תשובה #2
אני עשוי לטעות כי מעולם לא השתמשתי בחבילה הזו, אבל לפי התיעוד/נושא השימוש, הם לא מאתחלים את המשתנה reward. נסה להסיר את זה, הנה הגרסה המתוקנת
type Props = {}
class Surprisebutton extends Component<Props>{
render() {
return (
<Reward
ref={(ref) => { this.reward = ref }}
type='memphis'>
<Button onClick={this.reward.rewardMe()} style={styles.button} variant="contained" color="primary">
Surprise!
<FavoriteIcon style={{ marginLeft: 10 }} />
</Button>
</Reward>
)
}
}
שוב, ייתכן שאני טועה אבל לפי דף הגיטהאב, אני חושב שזה הדבר היחיד שאני יכול להסיק.
