Vue List Rendering: modifying string value prior to "v-for" usage

I have a challenge where I need to replace a specific string with a condition before it is displayed in the output.

Check out my code snippet below:

<script setup>
import { ref } from 'vue'

const items = ref([{ letter: "A", message: '1' }, { letter: "B", message: '2' }])
</script>

<template>
    <li v-for="(item, index) in items">
        <p v-if="item.message === '1'">
            {{ item.letter }} - {{ 'Apple' }}
        </p>
        <p v-if="item.message === '2'">
            {{ item.letter }} - {{ 'Banana' }}
        </p>
    </li>
</template>

I attempted placing the v-if inside the v-for, but this approach seems unfeasible. I am exploring ways to dynamically change the value of item.message before rendering it using v-for. Any ideas or suggestions on how to achieve this?

Answer №1

Have you considered using a Computed Property for this situation?

A Computed Property derives a value based on other values (its dependencies), making it an ideal solution here.

You can define it like so:

import { ref, computed } from 'vue'


const displayItems = computed(() => {
  return items.value.map(item => {
    if (item.message === '1') {
      return `${item.letter} - Apple`
    }
    if (item.message === '2') {
      return `${item.letter} - Banana`
    }
    return `${item.letter} - unknown`
  })
})

To update your template, use the following code:

<li v-for="item in displayItems">
      <span> {{ item }}</span>
</li>

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

What is the correct way to implement useEffect for an asynchronous fetch request in React? Is there a specific method to avoid react-hooks/exhaustive

Hey there, I'm currently encountering an issue with the useEffect hook in React. While the code below is functioning correctly, es-lint keeps suggesting that I include dependencies in the dependency array for useEffect. Code that's working with / ...

How to retrieve the ID of a table column using jQuery in HTML

I am facing an issue with a HTML table that consists of only one row and one column: <table id="backlog"> <colgroup> <col width="200"></colgroup> <tbody> <tr><td id="91" tabindex="0" class="mark">BackLog&l ...

The `chrome.windows` API is not defined for this particular Chrome

I'm currently in the process of developing a Chrome extension that will allow users to effectively manage open tabs within a specific application's website. Here is the current manifest file: { "manifest_version": 2, "name": "AT Tabs", ...

Connect the property of a list item to various parameters

After making an API call, I received a list of items that included student names. Now, I needed to search for a specific name within the students list and select it. For instance, the data retrieved from the API looked like this: students: [{'fullName ...

The output of an Angular factory function is consistently null

I am facing an issue with storing the currentUser object in a factory to make it accessible throughout my app. Despite ensuring that the user object is being received server side, whenever I call CurrentUserFactory.GetCurrentUser(), it returns null inste ...

Show the JSON data returned

Looking for a way to display the JSON response in a JSP page using AJAX... function doAjaxPost() { var name = $('#name').val(); var password = $('#password').val(); var gender = $('#gender').val(); var abo ...

What's the reason behind JavaScript's Every method not functioning properly?

I'm struggling to understand why the array method 'every' is not functioning properly in my project (working on a roguelike dungeon crawler game). Here's an example of the array of objects I am working with: { x: newrm.x, ...

Problem where ipcMain.handle() fails to send a value back to ipcRenderer.invoke()

After spending 2 days struggling with this problem, scouring the API documentation of Electron.js and various websites, I am turning to you all as my final hope: Here are the 3 files that are causing the issue: main.ts (excerpt): app.whenReady().then(() ...

Arrange a jQuery data table by British date format and exclude any empty cells

Is there a way to ensure the empty cell remains at the bottom when sorting dates in the dd/mm/yyyy format? I am encountering issues with this aspect in sorting the age column. Here is the link to my problem: http://jsfiddle.net/dup75/11/ $('#hr_curri ...

Stop the browser from automatically loading a file that is dragged and dropped into it

I've implemented an HTML5 drag and drop uploader on my webpage. It functions perfectly when a file is dropped into the designated upload area. Unfortunately, if I mistakenly drop the file outside of that area, the browser treats it as a new page loa ...

Having trouble getting a Mocha test to display two decimal places in Javascript? Both Big and Decimal libraries are causing issues

After encountering an error with the Big library, I decided to switch to Decimal. First, I ran npm install Decimal Then, I added the following code: const Decimal = require('decimal'); Even after following the examples, my comparison returned { ...

I am constantly encountering the error message "Reading 'Linear'' error due to undefined properties in my threejs code

A procedural generation library for threejs caught my attention Here is the link to the library: https://github.com/IceCreamYou/THREE.Terrain Despite following the instructions provided in the ReadMe.md file, I encountered an error that says: Cannot read ...

Is there a way for me to incorporate a function in this script that allows for cycling through URLs in a predetermined order by clicking a button?

Is it feasible to incorporate a click button cycle URL function that alternates between URLs in a specified order to this script? <script type="text/javascript> var urls = new Array(); urls[0] = "google.com"; urls[1] = "amazon.com"; var random = M ...

Struggling to set up Tailwind in NuxtJS configuration

Using the "@nuxtjs/tailwindcss": "^2.0.0" for my Nuxt App has been quite helpful. Upon installation, it generated a tailwind.config.js file. I made some modifications to the code below: module.exports = { theme: {}, variants: {}, plug ...

using angular.js to assign a value to an <input> field

There seems to be an issue with the code, as I am unable to see the value in the HTML: '<div ng-app="BusinessinfoModule" ng-controller="BusinessinfoController" <label>Your Business Name</label> <input ...

Vue: Implementing conditional styling in table cells

Currently, my vue function involves using nested v-for loops to iterate through an object and create a table with rows and cells. While this method is effective, I am now faced with the challenge of implementing a v-if statement in the innermost loop to co ...

Unit test failure attributed to misconfigured ECMAScript module setup

I am currently using Vue 3 along with Jest for testing purposes. I have created a simple code snippet to test, which is displayed below. Following some suggestions on Stack Overflow, I made some modifications to the babel.config.js and package.json files a ...

Enhance efficiency with Bootstrap typeahead prefetch capability

Currently, I am utilizing the Bootstrap typeahead API to generate a real-time search feature. The source option is quite useful as it enables an AJAX call to retrieve data from the server. However, I am interested in preloading the source upon page load a ...

What is the best way to sort a table by column index using HTML?

I find myself in a situation where I am not well-versed in HTML, Javascript, and CSS. Here is the scenario: <div class="table"> <table class="display-table"> <thead> <tr> ...

Error encountered while running npm build command for HTML Webpack Plugin

As a newcomer to webpack, I'm currently attempting to integrate it into a project that utilizes the Cesium JS API. Following the online tutorial provided by Cesium, my process hits an unexpected roadblock when running the command "npm run build." The ...