Функция отправки магазина не принимает мои параметры - PullRequest
0 голосов
/ 24 июня 2019

Добрый день. Я пытаюсь сделать функцию быстрого поиска с помощью axios, и она перестает работать всякий раз, когда я пытаюсь передать ей какие-либо параметры, однако она прекрасно работает, когда я жестко кодирую значения, которые мне нужны для выполнения вызова API, как показано выше.

Это мои компоненты методов и переменных:

<script>
export default {
  data: () => ({
    value1: null,
    value2: null,
    value3: null,

  }),

  methods: {
    myMethod(){
      this.$store.dispatch('storeFunction', {functionValue1: this.value1, functionValue2: this.value2, functionValue3: this.value3})
    }
  },
};
</script>

Это функция отправки в мой магазин, она не работает и выдает ошибку 500:

    storeFunction(functionValue1, functionValue2, functionValue3) {
      axios
        .post("/some/call", {        
          apiValue1: functionValue1,
          apiValue2: functionValue2,
          apiValue3: functionValue3
         }
           )
        .then(res => {
          console.log("call response", res)
        });
    },
  },

Однако, если я жестко закодирую значения, которые мне нужны, чтобы создать этот пост, он будет работать просто отлично:

    storeFunction() {
      axios
        .post("/some/call", {        
          apiValue1: 'myValue1',
          apiValue2: 'myCalue2',
          apiValue3: 'myCalue3'
         }
           )
        .then(res => {
          console.log("call response", res)
        });
    },
  },

Что я делаю неправильно?

1 Ответ

0 голосов
/ 24 июня 2019

Вы отправляете действие с одним объектом в качестве параметров:

this.$store.dispatch('storeFunction', {functionValue1: this.value1, functionValue2: this.value2, functionValue3: this.value3})

Но ваша функция принимает три отдельных параметра:

storeFunction(functionValue1, functionValue2, functionValue3)

Решение должно состоять в том, чтобы просто деструктурировать ваши параметры в функции, например так:

storeFunction({functionValue1, functionValue2, functionValue3})

Или, если вы не можете использовать эту функцию, вы можете сделать это ES5 следующим образом:

storeFunction(values) {
  var functionValue1 = values.functionValue1
  var functionValue2 = values.functionValue2
  // etc...
}
...