javascript - 打字稿:TypeError 未定义
问题描述
我对 Typescript 和 React 还很陌生。我一直在尝试实现react-rewards
npm 库,除了一个问题外,我已经解决了所有问题。
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 is undefined
。最好的解决方法是什么?
解决方案
它与 TypeScript 无关。TS 只是一个编译器和 linter,您会遇到运行时错误。就是这一行:
this.reward.rewardMe()
在ref
组件完全挂载后分配并rewardMe()
尝试立即调用它。这也是次要错误。您不想使用该()
调用,否则该函数将立即触发(并且永远不会停止)。
该行应该是
<Button onClick={this.reward.rewardMe} style={styles.button} variant="contained" color="primary">
推荐阅读
- javascript - Why doesn't an array inside of an array work in a boolean expression with javascript?
- python - module 'QuantLib' has no attribute 'CallabilityPrice'
- django - Request from unknown party, Sogou
- c++ - Unable to print a pointer in gdb. Am i facing a stack corruption
- javascript - How to preview the video file that user wants to upload on the website
- java - Overflow inner menu icons beside each other
- r - R Error: 'names' attribute [1] must be the same length as the vector [0]
- typescript - why I can't get the string from enum value in Typescript?
- python - Adding new data to class in a Django model
- java - 在 Android 10 上选择文件后出现打开对话框