javascript - Typescript: TypeError är odefinierad
Jag är ganska ny inom Typescript och React. Jag har försökt att implementera react-rewards npm-biblioteket och jag har löst allt förutom ett problem.
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>
)
}
}
Efter att ha kört npm start får jag ett felmeddelande som säger TypeError: this.reward är odefinierad. Vad är det bästa sättet att lösa det?
Svar #1
Det har inget att göra med TypeScript. TS är bara en kompilator och linter och du får ett körfel. Det är denna rad:
this.reward.rewardMe()
ref tilldelas efter att komponenten har monterats helt och rewardMe() försöker anropa den omedelbart. Detta är också ett sekundärt misstag. Du vill inte använda ()-anropet annars kommer funktionen att köras omedelbart (och aldrig sluta).
Linjen bör vara
<Button onClick={this.reward.rewardMe} style={styles.button} variant="contained" color="primary">
Svar #2
Jag kan ha fel eftersom jag aldrig har använt detta paket, men enligt dokumentationen/användningsemnet. De initierar inte reward-variabeln. Försök ta bort det, här är den fixade versionen
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>
)
}
}
Igen kan jag ha fel, men enligt GitHub-sidan tror jag att det är det enda jag kan dra slutsatsen av.
