打字稿:_this2.onClick不是一个函数

问题描述 投票:2回答:1

我使用typescript进行react-native开发。 ListListItem来自NativeBase,ListItem就像TouchableOpacity组件。

...
public onClick = () => this.props.navigation.navigate("NextScreen");
public _renderRow = (item: any) {
    return (
        <ListItem onPress={() => this.onClick()}>
             ...
        </ListItem>
    );
}
public render() {
   return(
        <List
            dataArray={this.data}
            renderRow={this._renderRow}
        />
   );
}

当我单击项目时,它显示以下错误。

_this2.onClick不是一个函数。 (在'_this2.onClick()'中,'_this2.onClick'未定义)

我假设这是因为onClick()函数没有绑定到组件类。函数是否在typescript中自动绑定?

我怎么解决这个问题?

javascript typescript react-native typescript2.0 native-base
1个回答
2
投票

你需要bind组件类的方法:

public onClick() { 
  this.props.navigation.navigate("NextScreen"); 
}
public _renderRow(item: any) {
    return (
        <ListItem onPress={this.onClick}>
             ...
        </ListItem>
    );
}
public render() {
   return(
        <List
            dataArray={this.data}
            renderRow={this._renderRow.bind(this)} // <---- Here
        />
   );
}
© www.soinside.com 2019 - 2024. All rights reserved.