Reactjs; деструктурирование назначения реквизита с помощью правил ESLint - PullRequest
0 голосов
/ 30 августа 2018

используя плагин ESLing для реакции Я запутался в деструктурировании и валидации типов пропов. в классе, как показано ниже

class Game extends Component {

  componentWillMount() {
    this.props.createNewPlayer(); //  Must use destructuring props assignment (react/destructuring-assignment)
  }

  render() {
    const { players } = this.props; // 'players' is missing in props validation (react/prop-types)
    const count = Object.keys(players).length;
    return (...);
  }
}

GameInit.propTypes = {createNewPlayer: PropTypes.func.isRequired};

const mapStateToProps = state => ({players: state.players});

export default connect(mapStateToProps,{ createNewPlayer })(Game);

так что если я переписываю деструктуру первой части в

  componentWillMount() {
    const {createNewPlayer}=this.props; // 'createNewPlayer' is already declared in the upper scope. (no-shadow) 
    createNewPlayer();
  }

и для деструктора игрока, если я переписываю проптипы как

GameInit.propTypes = {
  createNewPlayer: PropTypes.func.isRequired,
  players: PropTypes.object.isRequired, // Prop type `object` is forbidden (react/forbid-prop-types)
};

как правильно соблюдать правила ESLint здесь? без изменения правил в .eslintrc

1 Ответ

0 голосов
/ 30 августа 2018

Вероятно, это решит вашу первую проблему:

const {createNewPlayer: createNewPlayerAlt } = this.props;
createNewPlayerAlt();

Для второй части вы должны указать, какой у вас здесь объект.

Объекты, все свойства которых представляют собой строку:

players: PropTypes.objectOf(PropTypes.String)

Объекты, все свойства которых являются числами:

players: PropTypes.objectOf(PropTypes.Number)

У вас есть смешанные свойства? Затем перейдите с shape:

player: PropTypes.shape({
    id: PropTypes.string,
    playerNumber: PropTypes.number
  }),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...