React-Native: данные о состоянии не возвращаются после возврата из Reducer - PullRequest
0 голосов
/ 25 января 2019

Я пишу несколько компонентов для собственного приложения. Здесь я столкнулся с проблемой, которую не могу объяснить.

Вот метод визуализации компонента -

return (
 <TouchableWithoutFeedback onPress={(event)=>this.selectedCurrentItem()} >
<View style={CardItemStyle.containerStyle}>
<Text style={CardItemStyle.titleStyle}>{this.props.title}</Text>
<Text style={CardItemStyle.bodyStyle}>{this.props.description}</Text>
<Image source={{uri:this.props.uri}} style={CardItemStyle.imgStyle}></Image>
</View>
</TouchableWithoutFeedback>
   )

Если пользователь нажимает на компонент, то будет вызван этот метод -

selectedCurrentItem(){      
this.props.singleSelection({id:this.props.id,fullData:this.props.dataList.fullData});
 console.log(this.props);
 Actions.CardForm({id:this.props.SingleSelection.id});
}

Если вы заметили выше, есть вызов SingleSelection, который в основном является создателем действия, который в свою очередь вызывает этот редуктор -

const INITIAL_STATE={fullData:[]};

export default  SingleSelection=(state=INITIAL_STATE,action)=>{
switch(action.type){
case "singleItem": 
selectedObject=action.payload.fullData.filter((item)=>{ return 
item.id===action.payload.id});

return {...state,selected:selectedObject};
 default: return state;
}
}

Вызов на редуктор проходит нормально, и я могу проверить это через отладчик.

Проблема с этой строкой (при попытке перейти к другому компоненту) -

 Actions.CardForm({id:this.props.SingleSelection.id});

в методе selectedCurrentItem.

Я не получаю данные о состоянии, полученные от редуктора. Итак,

    this.props.SingleSelection.id 

не имеет значения

Обратите внимание, что у меня есть следующий комбайн редуктор -

export default combineReducers({
    dataList:dataList,
    SingleSelection:SingleSelection
})

Вот mapstateToProps и подключиться из того же компонента -

const mapStateToProps=(state)=>{
    return state;
}



export default connect(mapStateToProps,{singleSelection})(CardItem);

Есть ли проблема, если я пытаюсь получить доступ к состоянию сразу после вызова действия / редуктора?

Пожалуйста, дайте мне знать, если мне нужно предоставить какие-либо другие данные.

1 Ответ

0 голосов
/ 29 января 2019

Я наконец понял это. Проблема была в этой функции -

selectedCurrentItem(){      
this.props.singleSelection({id:this.props.id,fullData:this.props.dataList.fullData});
  Actions.CardForm({id:this.props.SingleSelection.id});
}

В первой строке я призываю создателя действия установить состояние. Сразу после этого я пытаюсь получить доступ к данным о состоянии. Немедленный доступ к данным о состоянии не вернет только обновленную информацию о состоянии.

...