When working with Vue, setting the default value for props as a computed property is an

  props: {
    rules: {
        type: Array,
        required: false,
        default: () => [
            (file) => !file
                || file.size < 10000000
                || this.getJsonDataByLocale.less_than_10mb_message,
            (file) => !file
                || ACCEPTED_FILE_TYPES.includes(file.type)
                || this.getJsonDataByLocale.wrong_file_message,
        ],
    }
}

This component is designed to have generic functionality. I am attempting to set the rules default value to a computed property named 'this.getJsonDataByLocale'. This computed property serves as a getter.

However, there seems to be an issue with Vue's lifecycle rendering process, where props are rendered before computed properties are resolved. As a result, the component does not have access to fetch data from the computed property.

I require using 'this.getJsonDataByLocale' because the error message needs to be dynamically generated based on its value.

Does anyone have any advice or suggestions on how to resolve this situation?

Answer №1

In accordance with Vue's official documentation,

It is important to note that props undergo validation before a component instance is generated, which means that instance properties such as data and computed are not accessible within default or validator functions. source

Therefore, it seems that accessing computed properties within props is not possible.

Answer №2

It has been mentioned by others that using computed values in your props is not possible. However, have you considered flipping the scenario and utilizing the prop within a computed property? You could achieve this by implementing something along these lines:

props: {
    rules: {
        type: Array,
        required: false,
        default: () => []
    }
},
computed: {
    errorMsg() {
        if (!this.rules.length) { // If no data in rules prop, use default
            return [
                (file) => !file || file.size < 10000000 || this.getJsonDataByLocale.less_than_10mb_message,
                (file) => !file || ACCEPTED_FILE_TYPES.includes(file.type) || this.getJsonDataByLocale.wrong_file_message,
            ]
        }
        // If there is data in rules prop, use that instead
        return this.rules;
    }
}

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

The attempt to access a Spring Boot webservice using AngularJS and the GET method resulted in a 500 status error, indicating that the operation

I have successfully developed a webservice using springboot and angularjs to download an excel file from the server to my local machine. The URL is being generated correctly, however, I am encountering a 500 error. Below is the code snippet: My Springboot ...

Vue CLI's build process encounters issues specifically related to Bootstrap Vue Next

I am currently in the process of migrating an application from Vue 2 to Vue 3 using the composition API. In our previous version, we were utilizing Bootstrap, but after some research, I discovered that it would be more suitable to switch to bootstrap-vue- ...

Is there a way to display a foundation.css drop-down menu using jQuery?

After attempting to create a navigation bar using foundation.css, I encountered an issue where the sub-menu does not appear when hovering over it with the mouse. The main question at hand is how to display the sub-menu of test on this specific webpage. D ...

Tips for integrating and utilizing the MSAL (Microsoft Authentication Library for JavaScript) effectively in a TypeScript-based React single page application

Issue I'm encountering difficulties importing the MSAL library into my TypeScript code. I am using the MSAL for JS library with typings in a basic TypeScript/React project created using create-react-app with react-typescript scripts. As someone who i ...

Add several converted links as variables in each section

The title may not be the clearest, but I am facing a challenge with an ecommerce site that has unmodifiable HTML. My goal is to include additional links for each product displayed on a page showcasing multiple products. Each link should be unique to its re ...

Retrieve data from the database and automatically populate all text fields when the dropdown value is modified

I need assistance with populating all textbox values based on the dropdown selection. The dropdown values are fetched using an SQL query. Here is the HTML Code: <select name="name" ID="name" class="form-control"> <opt ...

Traversing an object with a loop

I'm currently working on a project that involves utilizing the swapi co API. Although I've successfully fetched results from the website, I'm struggling with displaying only specific API objects, particularly array spaceships. var linkApi=" ...

When transferring files to the src/pages directory in Next.js, the custom _app and _document components are not recognized

The documentation for Next.js mentions that the src/pages directory can be used as an alternative to /pages. However, I encountered a problem when moving my custom _app.tsx and _document.tsx files into the src folder, as they were being ignored. If you cr ...

Event cancellation received from IncomingMessage

I have a simple express server running on Node with versions 4.13.3 and 4.2.3, respectively. //initialization code app.put('/', function(req, res) { req.on('close', function() { console.log('closed'); }); req.on( ...

Choosing items by pressing "shift + up arrow"

I have a collection of elements, each representing one line of text. When you click on an element, it changes color. If you then hold down "shift + arrow up," the items above it are also selected. How can this functionality be implemented? My initial app ...

What is the best way to create a flexible Ul-LI menu?

Is it possible to create a flexible menu where clicking on an item does not cover other items in the menu? #demo { margin: 30px 0 50px 0; font-family: sans-serif; } #demo .wrapper { display: inline-block; width: 180px; height: 20px; position ...

Implementing universal styles to injected HTML (v-html)

I am facing an issue while injecting HTML content from my database using Vue. The problem is that although I can successfully inject the HTML, the framework stylesheet (Vuetify) does not seem to be applied to the injected content. The rest of the page ha ...

What is the best method to find a matching property in one array from another?

I am working with two arrays in TypeScript. The first one is a products array containing objects with product names and IDs, like this: const products = [ { product: 'prod_aaa', name: 'Starter' }, { product: 'prod_bbb&apos ...

The controller method appears to be unable to detect any parameters

I have been trying to pass an ID in the URL but my controller is not receiving that value. $("#ChangeSlideForm").on("submit", function(){ $.ajax({ type: "POST", url: base_url + "Visualiser/ChangeSlide/21", su ...

Having trouble viewing the header in devtools for $http requests?

The data in the request header is not visible to me. Here's what I'm using: $http.post('http://localhost/api/validate', {}, { headers: key } ); https://i.sstatic.net/yioTT.png The form that gets passed during runtime is shown below: ...

The initial render of children elements in React Google Maps Api may not display properly

I am struggling to incorporate the Google Maps API into my app. Everything works smoothly until I try to display a Marker at the initial rendering of the map. The Marker does not show up, but if I add another Marker after the rendering is complete, then it ...

Event not tracking properly due to missing label in GA event firing

Seeking assistance with a project I'm currently engaged in. I have created an HTML5 video containing a playlist and encountering difficulties setting up multiple labels in GA to track each individual video play. While I found code online, adapting it ...

I successfully managed to ensure that the splash screen is only displayed upon the initial page load. However, I am now encountering an issue where it fails to load again after I close the page. Is there any possible solution

After successfully implementing a splash screen that only plays once on page load, I encountered an issue. When I close the tab and revisit the page, the splash screen no longer plays. Is there a way to fix this problem? Perhaps by setting a time limit for ...

In order to manage this specific file type, you may require a suitable loader. React in conjunction with Material UI could be the

I recently created a project using Material UI and React JS, but I encountered a puzzling error without making any changes to my app. Despite reaching out for help by creating an issue on MUI, I received no response. The app was generated using npx-create ...

What is the most efficient method for executing over 1,000 queries on MongoDB using nodejs?

I have a task to run around 1,000 queries on MongoDB in order to check for matches on a specific object property. I must confess that my code is quite amateurish, but I am open to any suggestions on how to improve its efficiency. The current version works ...