Vue + машинопись vue - роутер и тип параметров - PullRequest
2 голосов
/ 21 января 2020

Я пытаюсь отправить некоторые данные из одного компонента в другой, но у меня есть проблемы с типами. Это мой код:

const someData: object = {
   param1: 'param1',
   param2: 'param2',
   array: [{},{}]
}
this.$router.push({ name: 'SomePage', params: { someData } }) 

Я получаю данные следующим образом:

  get param1 (): string {
    return this.$route.params.someData['param1']
  }
  get param2 (): string {
    return this.$route.params.someData['param2']
  }
  get array (): Array<object> {
    return this.$route.params.someData['array']
  }

И ошибка с консоли:

Argument of type '{ name: string; params: { someData: object; }; }' is not assignable to parameter of type 'RawLocation'.
  Type '{ name: string; params: { someData: object; }; }' is not assignable to type 'Location'.
    Types of property 'params' are incompatible.
      Type '{ someData: object; }' is not assignable to type 'Dictionary<string>'.
        Property 'someData' is incompatible with index signature.
          Type 'object' is not assignable to type 'string'.

Работает только если я введите any в someData, но я не буду его использовать. Как я могу решить эту проблему? Что это за 'Location' и 'RawLocation' тип?

1 Ответ

1 голос
/ 04 апреля 2020

То, что вы можете передавать через страницы в качестве параметров запроса, является строковым типом, а не чем-то еще. это означает, что вы не можете отправить массив по параметру запроса. Вы должны изменить все свои параметры на строку

const someData: object = { param1: 'stringType', param2: 'stringType', ... } this.$router.push({ name: 'SomePage', params: { someData } })

Вместо параметра запроса с помощью vux вы можете сохранять и вводить данные и использовать их везде, где захотите, при моем открытии я буду намного лучше, потому что в то же время вы можете управлять переданными данными своими собственными

, а о вас @MagnusTeekivi вы можете преобразовать их в строку после того, как вы можете их использовать, например,

`this.$router.push({ name: 'user', params: { userId.toString() })`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...