отреагировать родной линт критически не удалось? - PullRequest
0 голосов
/ 20 декабря 2018

После запуска npm run lint: критический, он вернулся с одной ошибкой, а именно:

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.props;вызывает ошибку, и мне нужно исправить, потому что это вызывает сбой в конвейере CI / CD

1 Ответ

0 голосов
/ 20 декабря 2018

Я не передаю отправку компонентам.Я думаю, что было бы лучше создать действие, которое делает то, что вам нужно, и передать его в компонент через 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);
...