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 }))