Я пишу несколько компонентов для собственного приложения. Здесь я столкнулся с проблемой, которую не могу объяснить.
Вот метод визуализации компонента -
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);
Есть ли проблема, если я пытаюсь получить доступ к состоянию сразу после вызова действия / редуктора?
Пожалуйста, дайте мне знать, если мне нужно предоставить какие-либо другие данные.