:定位:
一个调用web服务的泛型方法,我的Network类显示spinner同时删除它一旦完成,然后最终通过显示警告处理错误,否则将响应发送回我的调用类。
我做了什么: 我已经编写了以下方法,即在我的基类中,所有类都将使用此方法。
问题: 当调用setState时,会更新屏幕,因此任何警报(错误/成功)会出现一段时间,然后最后一个屏幕出现在前面,并且当警报在屏幕后面时,每个事物都会卡住。
需要: 任何人都可以指出我在做什么错误或任何概念如何处理这个。
import React, { Component } from 'react'
import { View } from 'react-native'
import Network from './Network';
export default class BaseClass extends Component {
constructor() {
super()
this.state = {
spinner:false,
response:''
}
}
onPress(data){
this.setState({ spinner: true })
var net = new Network();
net.makeCall(data,function(context,err,res){
context.setState({ spinner: false })
if(err!= null){
alert('error')
}
else{
alert('sccess')
}
)
}
}
第二种方法 我采用了第二种方法,但在这里得到了相同的结果。
import React, { Component } from 'react'
import { View } from 'react-native'
import Network from './Network';
export default class BaseClass extends Component {
constructor() {
super()
this.state = {
spinner:false,
response:''
}
}
onPress(data){
this.setState({ spinner: true })
var net = new Network();
net.makeCall(data,function(context,err,res){
context.setState({ spinner: false })
if(err!= null){
context.setState({ response: err })
}
else{
context.setState({ response: data })
}
)
}
componentDidUpdate(){
alert(this.state.response)
}
}
答案 0 :(得分:0)
我目前的工作班,很少有类是自定义类,如Screens,SessionManager,SessionTimer,Constants
Context c;
......
protected void onCreate(Bundle savedInstanceState) {
...
c = this;
...
}
......
class Task extends AsyncTask<Void,Void,Void>{
.......
@Override
protected void onPostExecute(Void aVoid) {
mProgress.dismiss();
Toast.makeText(c, "Alert Posted", Toast.LENGTH_LONG).show();
//OR
Toast.makeText(getApplicationContext(), "Alert Posted", Toast.LENGTH_LONG).show();
}
}