Как передать массив и объект в качестве аргумента в Javascript? - PullRequest
0 голосов
/ 07 мая 2020

Текущий код

async onPressAdd() {
  // at this moment, items is an array and shop is an object
  db.storeSale(items, shop);
}

В другом файле

storeSale = async ({ items,shop }) => {
  console.log(items); // undefined
  console.log(shop);  // not object
}

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

Я хочу получать предметы в виде массива и делать покупки как объект.

Буду признателен, если вы дадите мне совет.

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Проблема не в типе аргументов.

Вы деструктурируете свой список параметров в storeSale, что означает, что ожидается единственный параметр: объект с items и shop свойства. Но вы передаете ему два дискретных аргумента.

Либо:

  1. Вместо этого передайте ему объект:

    async onPressAdd() {
      db.storeSale({items, shop})
      // −−−−−−−−−−^−−−−−−−−−−−^
    }
    

    и оставьте storeSale то же, что у вас сейчас, или

  2. Сделайте storeSale примите дискретные параметры, удалив {} из списка параметров:

    storeSale = async (items, stop) => {
    // −−−−−−−−−−−−−−−^−−−−−−−−−−−^−−−− no {} here
    

    и оставьте ему свой звонок так же, как и сейчас.

0 голосов
/ 07 мая 2020

storeSale ожидает объект с {items, shop}

, но вместо этого вы даете ему 2 параметра

попробуйте db.storeSale ({items, shop});

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