函数未被调用 React native
2021-08-31
367
我有一个名为 setSTNo 的函数,但未被调用。我尝试了很多次,但无法找出错误。需要助手..
code
const onRefresh = React.useCallback(async() => {
setserviceTData([])
fetch(`${API_URL}/v1/serviceTicket`, {
method: 'GET',
headers: {
Accept: 'application/json',
'apiKey': 'asdkhjfgsed34e',
'deviceId': deviceId,
'sessionId': sessionId
},
})
.then((response) => response.json())
.then((json) => {
if (!json.success ) {
if (json.errorCode === 403) {
sessionExpire()
}
} else if(json.data){
setserviceTData(json.data);
console.log('Ticket Data',json.data);
setSTNo();
}
}
)
.catch((error) => console.error(error))
.finally(() => setLoading(false));
}, [refreshing]);
console.log("st No" , serviceTData)
上面的 console.log 函数工作正常。但我不知道为什么它没有调用该函数并显示
[TypeError: undefined 不是对象(评估“serviceTData.id”)]
我的函数如下
async function setSTNo (serviceTData) {
console.log("st No tryyy" )
try {
await AsyncStorage.setItem('STnumber', serviceTData.id);
setLaststNumber(serviceTData.id);
console.log("OLD st No" , LaststNumber);
} catch (e){
console.log("Error Part",e);
}
}
2个回答
函数
setSTNo
需要参数
serviceTData
,但您并未将其传递给该参数。
我猜
serviceTData
是您的 useState 项之一,并且您希望在
serviceTData
值更新时调用函数
setSTNo
。
如果是这样,
-
您可以从
async function setSTNo (serviceTData)
参数列表中删除serviceTData
-
添加
useEffect
以监听serviceTData
项中的更改,然后在serviceTData
更新时调用函数setSTNo
。 -
从您的 API 调用中删除
setSTNo
函数调用,然后阻止。
async function setSTNo () {
console.log("st No tryyy" )
try {
await AsyncStorage.setItem('STnumber', serviceTData.id);
setLaststNumber(serviceTData.id);
console.log("OLD st No" , LaststNumber);
} catch (e){
console.log("Error Part",e);
}
}
然后添加
useEffect
来监听您的
serviceTData
状态。
useEffect(() => {
if(serviceTData)
setSTNo();
},[serviceTData]);
假设
serviceTData
的初始状态为
null
。
nithinpp
2021-08-31
看来您的函数
setSTN
需要一个您未发送的参数
您的代码:
} else if(json.data){
setserviceTData(json.data);
console.log('Ticket Data',json.data);
setSTNo(); //TODO THIS NEEDS AN ARGUMENT <------------------
}
ThatsRight
2021-08-31