Vue — v-для изменения значений

#vue.js #vuejs3 #v-for #vue-composition-api

#vue.js #vuejs3 #v-для #vue-состав-api

Вопрос:

Шаблон:

 <template>
  <nav>
    <router-link :to="key" v-for="(value, key) in state.menu" :key="key">{{value}} | </router-link>
  </nav>
</template>
 

Код:

 export default {
  setup() {

    const menu = ['home', 'news', 'about'];

    const state = reactive({
      menu: {}
    }); 

    menu.map(item => {
      state.menu[item] = Common.locs[item];
    });

    return {
      Common,
      state,        
    }

  }
}
 

Я хочу обновить

 :to="key" 
 

чтобы запустить его через какой-либо фильтр или функцию, чтобы изменить его, чтобы добавить префикс что-то вроде «/ other /», поэтому вместо рендеринга

 <a href="/home" ...>
 

Я бы

 <a href="/other/home" ... >
 

(Конечно, значения const menu высмеиваются для примера; они извлекаются из сервиса, поэтому я ничего не говорю об этом, и я не хочу изменять их после выборки по другим причинам)

Итак, в общем, мой вопрос касается не правильной маршрутизации, а того, как вы изменяете данные v-for (в моем случае: ключ) во время выполнения, если вам нужно?

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

 state.menu["/other/"   item] = Common.locs[item];
 

но я хочу сохранить state.menu, как я уже писал. Я хочу, чтобы изменения происходили во время рендеринга v-for.)

Комментарии:

1. I want to run it through some filter or function to modify it to add the prefix... Вы пробовали это сделать? Что это тебе дало? Это может быть решением: функция, которая возвращает измененный путь. Или вы могли бы использовать computed значения.

Ответ №1:

Вы пробовали использовать литерал шаблона:

 <template>
  <nav>
    <router-link :to="`/other/${key}`" v-for="(value, key) in state.menu" :key="key">{{value}} | </router-link>
  </nav>
</template>