gpt4 book ai didi

javascript - 从另一个类 React Native 访问它

转载 作者:行者123 更新时间:2023-11-28 03:15:46 25 4
gpt4 key购买 nike

我目前正在分解我的代码,以免重复相同的行 x 次,因此我创建了一个 Functions.js 文件,用它来调用其他类的函数。问题是,我无法在保留 this 的属性来执行 setState、重定向等的同时执行该函数。这是一个示例,它会更能说明问题:

functions.js 中的类:

export class KoHttpRequest extends React.Component {
constructor(props) {
super(props);

this.postRequest = this.postRequest.bind(this);
}

postRequest = async(url, json, accessToken) => {
this.setState({loaded: false, validatingAction: false});
fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization' : 'Bearer '.concat(accessToken)
},
body: json
}).then((response) => {
if (response.ok === true) {
this.fetchData().then(() => {
this.setState({loaded: true}, () => {
this.userIsValidatingAnAction();
setTimeout(() => {this.setState({validatingAction: false})}, 1000);
});
})
} else {
let error = JSON.stringify(response.headers.map);
this.props.navigation.navigate('Accueil', {failedAction: true, errorReason: error.split('"error-reason":').pop().split('}},')[0].concat(' URL : '.concat(response.url))});
}
})
.catch((error) =>{
console.error(error);
});
}

render() {
return null;
}
}

在我想调用它的文件中:

import { KoHttpRequest } from '../Components&Functions/Koust.js';


createNewInvoice = () => {
new KoHttpRequest().postRequest('https://koupp.com/apex/rest/mobile/facture', JSON.stringify({
type:'C',
numero:this.state.invoiceNumber,
date_liv:this.state.pickedDate,
provider_id:this.state.selectedProvider
}), this.state.accessToken);
};

因此,为了清楚地解释,在类中,.then() 和 .error() 对于我在应用程序中执行的所有请求都是相同的,这就是为什么我需要这里的代码而不是调用它的类中的代码。不幸的是,我不明白如何告诉函数引用使用的“this”位于其他组件中。因为实际上该函数正在使用它们自己的 Prop ..

感谢您的帮助。

最佳答案

我只是想访问调用它的类的 setState 。在 Functions.js 中,当它使用 setState 时,我希望它实际上设置另一个类的状态

编辑:

我想我找到了使用回调的解决方案。

createNewInvoice = () => {
this.setState({loaded: false, validatingAction: false}, () => {
new KoHttpRequest().koPostRequest('https://koupp.com/apex/rest/mobile/facture', JSON.stringify({
type:'C',
numero:this.state.invoiceNumber,
date_liv:this.state.pickedDate,
provider_id:this.state.selectedProvider
}), this.state.accessToken, this.props, function(result) {
if (result.status === 200) {
this.fetchData().then(() => {
this.setState({loaded: true}, () => {
this.userIsValidatingAnAction();
setTimeout(() => {this.setState({validatingAction: false})}, 1000);
});
})
}
});
});
};

但是现在,那个回调函数无法访问“this”。

EDIT_2:

找到它。只需要将 function() {..} 替换为 () => {..}

谢谢!

关于javascript - 从另一个类 React Native 访问它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59659955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com