2017-04-13 27 views
3

如何更新flatlist項目onpress中的項目文字?更新平板列表項onPress

renderEntries({ item, index }) { 
    return(
     <TouchableHighlight onPress={()=> this.setState({value: this.state.value+1})> 
      <Text>{this.state.value}</Text> 
     </TouchableHighlight> 
    ) 
} 

我得到這個錯誤:

enter image description here

+0

錯誤顯示:this.setState不是一個函數。 – shalonteoh

+0

你可以顯示代碼,你從哪裏調用'renderEntries'函數? –

+0

{this.list = ref; }} keyExtractor = {(項目)=> item.entry.entryId} 數據= {this.state.data} renderItem = {this.renderEntries} 水平= {FALSE} /> – shalonteoh

回答

0

最近,我有以下解決同樣的問題,爲我工作

import React, { Component } from 'react'; 
import { 
    AppRegistry, 
    StyleSheet, 
    SectionList, 
    Text, 
    NativeModules, 
    Button, 
    FlatList, 
    Switch, 
    View 
} from 'react-native'; 


export default class alarm extends Component { 

    state={ 
    data:[ 
     { name:'First' , isOn:true }, 
     { name:'Second', isOn:true }, 
     { name:'Third' , isOn:true }, 
     { name:'Fourth' , isOn:false } 
    ], 
    selected:true, 
    } 

    _keyExtractor = (item, index) => item.name; 

    _onValueChanged = (item,value) => 
    {  
     var items = this.state.data; 
     var index = items.indexOf(item); 
     items[index].isOn = value; 
     this.setState({data:items}); 
     this.setState({selected:!this.state.selected}); 
    }; 

    _renderItem = ({item}) => 
    ( 
    <View> 
     <Text>{ item.name }</Text> 
     <Switch value={item.isOn} 
     onValueChange={(value) => 
     {   
     this._onValueChanged(item,value); 
     }}/> 
    </View> 
) 

    render() { 
    return (

     <FlatList 
      data={this.state.data} 
      renderItem={this._renderItem} 
      extraData={this.state.selected} // This is the Key you need to privde extra data parmater 
      keyExtractor={this._keyExtractor} 
     /> 

    ); 
    } 
} 
AppRegistry.registerComponent('alarm',() => alarm);