react-native-router-flux 具有 Replace、Reset 和 Refresh 的刷新组件
react-native-router-flux refreshing component with Replace, Reset, and Refresh
所以我一直在使用包含 react-native-router-flux 的 ignite CLI。
我的问题是,我有一个来自 props 的数据,当用户按下 'apply' 时,这些数据将被上传到数据库,这是代码
<TouchableOpacity style={styles.button} onPress={this.onApply.bind(this)}>
<Text style={styles.buttonText}>Apply</Text>
</TouchableOpacity>
async onApply(){
var token = await AsyncStorage.getItem(STORAGE_KEY)
var url = "http://purwadhikaconnect.southeastasia.cloudapp.azure.com/api/applicants"
var jobId = this.props.jobData.Id
console.log('int?', jobId);
var config = {
method: "POST",
headers:{
'Content-Type' : 'application/json',
'Accept' : 'application/json',
"Authorization" : 'Bearer ' + token
},
body: JSON.stringify({
JobId : parseInt(jobId)
})
}
return fetch(url, config).then((response) => response.json())
.then(this.setState({
isApplied: true,
})).then((response) =>{Alert.alert('Job Applied Successfully')})
.then(this.setState({currentApplicant: this.state.currentApplicant + 1})) //trying to manipulate the value
.then(NavigationActions.Jobs({type: 'reset'}))
.catch((exception) => {Alert.alert('You have applied for this job!')})
}
现在数据已经上传成功,但是不会自动刷新。我一直在使用组件更新生命周期,例如 shouldComponentUpdate()
你可以看到我的 Action 类型是 reset
。现在使用 Actionconst.replace
的问题是我的菜单按钮将被后退按钮替换。如果我使用
ActionConst.refresh()
它也不会刷新。请帮助我,我已经处理这个问题几个月了,我已经尝试了几乎所有方法来解决它,但无济于事,而且它变得令人沮丧......;(
我认为问题在于您将 setStates 作为您的 .then 的参数传递,请尝试将其更改为:
.then((response) => this.setState({ isApplied: true }))
所以我一直在使用包含 react-native-router-flux 的 ignite CLI。
我的问题是,我有一个来自 props 的数据,当用户按下 'apply' 时,这些数据将被上传到数据库,这是代码
<TouchableOpacity style={styles.button} onPress={this.onApply.bind(this)}>
<Text style={styles.buttonText}>Apply</Text>
</TouchableOpacity>
async onApply(){
var token = await AsyncStorage.getItem(STORAGE_KEY)
var url = "http://purwadhikaconnect.southeastasia.cloudapp.azure.com/api/applicants"
var jobId = this.props.jobData.Id
console.log('int?', jobId);
var config = {
method: "POST",
headers:{
'Content-Type' : 'application/json',
'Accept' : 'application/json',
"Authorization" : 'Bearer ' + token
},
body: JSON.stringify({
JobId : parseInt(jobId)
})
}
return fetch(url, config).then((response) => response.json())
.then(this.setState({
isApplied: true,
})).then((response) =>{Alert.alert('Job Applied Successfully')})
.then(this.setState({currentApplicant: this.state.currentApplicant + 1})) //trying to manipulate the value
.then(NavigationActions.Jobs({type: 'reset'}))
.catch((exception) => {Alert.alert('You have applied for this job!')})
}
现在数据已经上传成功,但是不会自动刷新。我一直在使用组件更新生命周期,例如 shouldComponentUpdate()
你可以看到我的 Action 类型是 reset
。现在使用 Actionconst.replace
的问题是我的菜单按钮将被后退按钮替换。如果我使用
ActionConst.refresh()
它也不会刷新。请帮助我,我已经处理这个问题几个月了,我已经尝试了几乎所有方法来解决它,但无济于事,而且它变得令人沮丧......;(
我认为问题在于您将 setStates 作为您的 .then 的参数传递,请尝试将其更改为:
.then((response) => this.setState({ isApplied: true }))