ESLint: Присвоение свойству параметра функции - PullRequest
0 голосов
/ 17 января 2019

Учитывая структуру как:

products: {
  '123': {
     details: [
        {
           price: 45,
           unitPrice: 0,
           productName: 'apples'
        }
     ]
  }
}

И функция,

function modifyPriceForApples(coefficient) {
    const products = cloneDeep(vehicleProductSelector.getAllProducts(store.getStore().getState()));
    let appleProduct;

    Object.keys(products).forEach((productId) => {
        const {
            details
        } = vehicleProducts[productId];
        details.forEach((detail) => {
            const {
                price,
                productName
            } = detail;
            if (productName === 'apples') {
                detail.unitPrice = coefficient * detail.price;
                appleProduct = products[productId];
            }
        });
    });
    return appleProduct;
}

Я получаю сообщение об ошибке: Assignment to property of function parameter

Как я могу решить эту проблему, запретив отключение правила линтинга?

Я продолжаю рассматривать деструктуризацию массива как ответ на эту проблему, однако я не слишком уверен, как это будет выглядеть на практике, учитывая, что это довольно сложная структура.

1 Ответ

0 голосов
/ 17 января 2019

Вместо использования forEach используйте map и действуйте так, как будто аргументы, предоставленные функции, являются неизменяемыми. Это безумие, что вы делаете details.forEach((detail) => {...});, а затем присваиваете detail с detail.unitPrice = coefficient * detail.price;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...