react native lint critical failed?



运行npm run lint:critical后,返回一个错误,即:

61:26  error    Unexpected 'this'                                 no-invalid-this

该功能要求用户允许进行位置检测:

_askForPermission = async () => {
const { dispatch } = this.props;
try {
const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
dispatch($isLocationActive()).catch((error) => dispatch(Activity.$toast('failure', error.message)));
}
} catch (err) {
console.warn(err);
}
};

行const{dispatch}=this.ops;导致了错误,我需要修复,因为它导致了管道CI/CD 的故障

我不会将调度传递给组件。我认为最好创建一个执行所需操作的操作,并通过mapDispatchToProps将其传递到组件中。您的组件可能看起来像这样:

import { toastError } from './actions'
class Foo extends Component {
render() {
_askForPermission = async () => {
const { myNewPropFromAction } = this.props;
try {
const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
myNewPropFromAction()
}
} catch (err) {
console.warn(err);
}
};
return (
<div>Hello World</div>
)
}
}
const mapDispatchToProps = dispatch => ({
myNewPropFromAction: toastError 
});
export default ({}, mapDispatchToProps)(Foo);

最新更新