undefined不是对象(评估'this.onSubmitPressed.bind')

时间:2017-02-24 13:09:24

标签: react-native

我有一个listview,通过Json显示数据。我介绍了一个函数,并在点击每一行时显示一个包含{shop_name}的警报。 但是在第一步它不会识别功能。 功能属于同一类 当我将Alert放入onPress时,它可以正常工作

 class SearchPage extends Component {

        constructor(props) {
          super(props);
          var dataSource = new ListView.DataSource({rowHasChanged:(r1,r2) => r1.ruid != r2.guid});
          this.state = {
            id: 'SearchPage',
            shopid: this.props.shopid,
            homesearchinpt: this.props.homesearchinpt,
            dataSource: dataSource.cloneWithRows(shopsArray),
            isLoading: true
          };
        }

        componentDidMount(){
          this.fetchData();
        }
        onSubmitPressed(){
          Alert.alert(
            'Alert Title',
            'alertMessage',
          )
        }
        fetchData() {
            fetch(REQUEST_URL)
                .then((response) => response.json())
                .then((responseData) => {
                    this.setState({
                    dataSource: this.state.dataSource.cloneWithRows(responseData),
                    loaded: true,
                });
            })
            .done();
        }
        render() {
            if (!this.state.loaded) {
                return this.renderLoadingView();
            }
            return (
                <ListView
                    dataSource={this.state.dataSource}
                    renderRow={this.renderShops}
                    style={styles.listView}

                />
            );
        }
        renderLoadingView() {
            return (
                <View style={styles.container}>
                    <Text>Loading</Text>
                </View>
            );
        }

        renderShops(shop) {

            return (


                <View style={styles.container} >
             <TouchableOpacity onPress={this.onSubmitPressed.bind(this)}>
                    <Image
              source={{uri: shop.shop_logo}}
              style={{width: 50, height: 50}}>
            </Image>
              <View>
                <Text style={styles.shop_name}>{shop.shop_name}</Text>
                <Text style={styles.shop_description}>{shop.shop_description}</Text>
              </View>

            </TouchableOpacity>
          </View>

            );
        }

};

错误:

  

undefined不是对象(评估'this.onSubmitPressed.bind')

2 个答案:

答案 0 :(得分:0)

onSubmitPressed(shopName) {
  Alert.alert(
    'Alert Title',
    shopName,
  )
}
<TouchableOpacity onPress={() => this.onSubmitPressed(shop.shop_name)}>

答案 1 :(得分:-1)

我重写了代码并解决了问题。 感谢