首页 > 解决方案 > 打字稿:TypeError 未定义

问题描述

我对 Typescript 和 React 还很陌生。我一直在尝试实现react-rewardsnpm 库,除了一个问题外,我已经解决了所有问题。

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。最好的解决方法是什么?

标签: javascriptreactjstypescript

解决方案


它与 TypeScript 无关。TS 只是一个编译器和 linter,您会遇到运行时错误。就是这一行:

this.reward.rewardMe()

ref组件完全挂载后分配并rewardMe()尝试立即调用它。这也是次要错误。您不想使用该()调用,否则该函数将立即触发(并且永远不会停止)。

该行应该是

<Button onClick={this.reward.rewardMe} style={styles.button} variant="contained" color="primary">

推荐阅读