2017-11-26 4 views
0

새로 고침을 추가하고 싶지만 _Refresh()에서 호출 할 항목을 모릅니다. 나는 다른 페이지에 행동, 상수 및 감속기가 있습니다. 나는 어떻게 api를 되 부를 수있는가. 도움에 미리 감사드립니다.redux로 새로 고치기를 추가하는 방법 native로 반응합니다.

새로 고침을 추가하고 싶지만 _Refresh()에서 호출 할 항목을 모른다. 나는 다른 페이지에 행동, 상수 및 감속기가 있습니다. 나는 어떻게 api를 되 부를 수있는가. 도움에 미리 감사드립니다.

class HomeworkList extends Component { 

constructor(props){ 
    super(props); 
    this.state = { 
    getHW : null, 
    refreshing: false, 
    appState: AppState.currentState, 
    months : ["Jan","Fev","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"] 
    } 
} 
_onRefresh() { 
    this.setState({refreshing: true}); 

    } 

componentDidMount(){ 
    this.props.getHomework(); 
} 


    render() { 
    const {homework,isFetching} = this.props.homework; 

    if(isFetching){ 
     return(
     <View> 

      <ActivityIndicator 
      color = '#bc2b78' 
      size = "large" 
      /> 
     </View> 
    ) 
    } 
    else{ 

     return (

     <ScrollView style={styles.container} refreshControl={ 
      <RefreshControl 
      refreshing={this.state.refreshing} 
      onRefresh={this._onRefresh.bind(this)} 
      /> 
     }> 

     <View style={styles.filterView}> 
      <View style={{flexDirection:'row'}}> 
      <Icon size={20} name="ios-options" color="#000000" /><Text style={[{color:"#333333"},mainStyles.postTitle]}> FILTER BY</Text> 
      </View> 
      <View> 
      <ScrollView 
       horizontal={true} 
       showsHorizontalScrollIndicator={false} 
       > 
       { 
       this.state.months.map((item,i)=>{ 
        return(
        <TouchableHighlight key={i} style={styles.filterItem} onPress={() => {}} underlayColor={"#de0000"}><Text >{item}</Text></TouchableHighlight > 
        ) 
       }) 
       } 
      </ScrollView> 
      </View> 
     </View> 

      <View style={[styles.titleView,mainStyles.coloredBackground]}> 

      <TouchableOpacity 
      > 
      <Text style={styles.title}> 
       THIS MONTH 
      </Text> 
      </TouchableOpacity> 
      </View> 

      <View style={styles.viewPadding}> 
      { 
      homework.length ? (
       homework.map((item, index) => { 
       return(
        <TouchableOpacity 
        onPress={() => this.props.navigate('Chat', { title: item })} 
        key={item.id} 
        > 
         <Text style={[styles.listItems,{borderColor:randomHex()}]}> 
         {item.date} 
         </Text> 
        </TouchableOpacity> 
       ) 
       }) 
      ):null 
      } 
      </View> 
     </ScrollView> 
     ); 
    } 
    } 
} 

function mapDispatchToProps(dispatch){ 
    return{ 
    getHomework:() => dispatch(fetchHomeworkFromApi()), 
    getNaviagationName:()=>dispatch(getNaviagationName()) 
    } 
} 

function mapStateToProps(state){ 
    return{ 
    homework: state.homework 
    } 
} 


export default connect(mapStateToProps,mapDispatchToProps)(HomeworkList); 

답변

0

새로 고침 콜백 내에 새로 고침 동작을 보냅니다.

이 작업은 fetchHomeworkFromApigetFreshData과 같은 "새로 워진"다른 여러 작업을 보내야합니다. 새로 고침하는 것이 의미가없는 것을 다시 가져 오지 마십시오.

귀하의 감속기 내부에 신선한 데이터가 도착할 때 이전 데이터가 대체되었는지 확인하십시오. (이전 데이터에 새 데이터가 추가되는 것을 피하십시오.)

관련 문제