-1
Good afternoon, I am working on a React Active application and I am having problems when I need to reload a value when it is already set, the function listingCurso can receive the course, but when I come back from the page and click again in another course it keeps getting the same, only when I reload the page it manages to call _onRefresh and the correct course.
The question is, how can I call the Bear() list function, every time this component is called.
Here is where the component is called.
this.props.navigation.navigate('CursosComprar', {
idCurso: curso.id,
data: data
})
And here’s the component.
export default class CursosComprar extends Component {
constructor (props) {
super(props)
this.state = {
loading: true,
token: '',
idCliente: '',
idCurso: '',
curso: []
}
}
async listarCurso() {
this.setState({
idCurso: await AsyncStorage.getItem("idCurso"),
token: await AsyncStorage.getItem("token"),
idCliente: await AsyncStorage.getItem("idCliente"),
loading: false,
});
api
.get(
`app/cliente/${this.state.idCliente}/${this.state.token}/curso-cliente/${this.state.idCurso}`
)
.then(res => {
this.setState({
curso: res.data[0],
loading: false
})
})
}
shouldComponentUpdate (newProps, newState) {
return (
newState.curso !== this.state.curso ||
newState.loading !== this.state.loading
)
}
componentDidMount () {
this.listarCurso();
}
_onRefresh = () => {
this.setState({
refreshing: true
});
this.listarCurso();
this.setState({
refreshing: false
});
}
render () {
return (
<View style={styles.root}>
<StatusBar backgroundColor='rgba(9,172,177,1)' />
<View style={styles.tabs1}>
</View>
<HeaderX button='Settings' style={styles.headerX}></HeaderX>
<View style={styles.container, styles.scrollArea1}
><ScrollView
horizontal={false}
contentContainerStyle={styles.scrollArea1_contentContainerStyle}
refreshControl={
<RefreshControl
refreshing={this.state.refreshing}
onRefresh={this._onRefresh}
/>
}
>
<Text style={styles.text1}>{this.state.curso.nome}</Text>
<Text style={styles.text2}>{this.state.curso.descricao}</Text>
<Text style={styles.text3}>Preço: R$ {this.state.curso.preco}</Text>
<TouchableOpacity key={this.state.idCurso} onPress={async () => {
let data = moment().format()
this.props.navigation.navigate('TelaCartao', {
idCurso: this.state.idCurso,
data: data
})
}} style={styles.appButtonContainer}>
<Text style={styles.appButtonText} >Comprar Agora</Text>
</TouchableOpacity>
</ScrollView>
</View>
</View>
)
}
}```
There is no body in the component, because it is an React Native application.
– Anderson Souza