search
HomeWeb Front-endFront-end Q&AWhat does computed mean in vue?

What does computed mean in vue?

Jul 25, 2022 pm 04:42 PM
vuecomputed

In vue, computed means "computed property", which is a cached calculation based on dependencies and will only be updated when its related dependencies change. Each computed property of computed will be cached. As long as the properties on which the computed property depends change, the computed property will be re-executed and the view will be updated. The results of computed properties are cached and will not be recalculated unless the dependent responsive property changes.

What does computed mean in vue?

The operating environment of this tutorial: windows7 system, vue3 version, DELL G3 computer.

computed definition

Computed is a computed property of vue. It is a cached calculation based on dependencies. It will only be updated when its related dependencies change

computed Usage

Generally speaking, computed uses the getter attribute by default

What does computed mean in vue?

computed’s responsive dependency (cache)

1. computed Each calculated property will be cached. As long as the properties on which the calculated property depends change, the calculated property will be re-executed and the view will be updated. In the code below, the calculated attribute fullName depends on the two properties firstName and lastName. As long as one of them changes, fullName will be re-executed.
2.computed calculated properties will be cached. fullName is used twice in the following code, but "this is fullName" is only output once in the console.

<template>
  <div>
    <div>
      姓:<input>
    </div>
    <div>
      名:<input>
    </div>
    <!-- 调用两次fullName -->
    <div>姓名:{{ fullName }}</div>
    <div>姓名:{{ fullName }}</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      firstName: "张",
      lastName: "三",
    };
  },
  computed: {
    fullName() {
        console.log("这是fullName");
        return this.firstName + this.lastName;
    }
  }
};
</script>

The working principle of computed

To understand the working principle of computed, you only need to understand the following three questions

1. Computed is also responsive

2. How does computed control the cache?

3. When the dependent data changes, how does computed update?

Vernacular principle:

Computed Responsiveness

Not sure what responsiveness is and what is a subscriber watcher? You can first understand the principle of Vue responsiveness.

Simply put:

  • The get and set functions you set for computed will be associated with Object.defineProperty.

  • So Vue can monitor and capture the operations of reading computed and assigning computed .

  • When reading computed , the set get function will be executed, but it is not that simple because there is also a layer of cache operation. If the data is not contaminated and is not dirty data, the value will be fetched directly from the cache without executing the get function. (What is dirty data will be discussed later)

  • When assigning computed, the set function will be executed. This is relatively simple, and will directly assign the set value to Object.defineProperty - set.

How to control the cache of Computed

We all know that computed has a cache, and the official has explained it.

The results of calculated properties will be cached and will not be recalculated unless the dependent responsive property changes. Note that if a dependency (such as a non-reactive property) is outside the scope of the instance, the computed property will not be updated.

Why do we need caching? Suppose we have a computationally expensive property A, which requires traversing a huge array and doing a lot of calculations. Then we might have other computed properties that depend on A . Without caching, we will inevitably execute A's get function multiple times. A large amount of calculation will cause the JS thread to be occupied, blocking the rendering of the page.

So in Vue, how does computed determine whether to use cache?

Firstly, after computed calculation, the calculated value will be saved into a variable (watcher.value). When reading computed and using the cache, this variable is returned directly. When computed is updated, this variable will be reassigned and updated.

TIP: computed calculation is to call the get function you set and then get the return value.

computed An important point in controlling cache is [dirty data flag dirty] dirty is an attribute of watcher.

  • When dirty is true, reading computed will execute the get function and recalculate.

  • When dirty is false, reading computed will use the cache.

Brief description of caching mechanism

  • When each computed creates its own watcher at the beginning, watcher.dirty will be set = true, so that when computed is used, the value will be calculated

  • When the dependent data changes and computed is notified, watcher.dirty = true will be assigned. At this time, when computed is re-read, the get function will be executed to recalculate.

  • Computed After the calculation is completed, watcher.dirty = false will be set so that when it is read again elsewhere, the cache will be used to avoid calculation.

How to update computed when dependent data changes?

Brief introduction to Vue responsiveness principle

## The essence of #computed is similar to data. When used, a subscriber watcher will be created for it and handed over to dependency collection. For example: when A refers to B, B will collect A's watcher.

Scene settings

Now page A refers to computed B, and computed B depends on data C.

Like this, the dependency order of A->B->C.

So, what happens when data C changes?

Is this the case?

  • Notify computed B of the update, and then computed B starts to recalculate.

  • Then computed B notifies page A of the update, and then re-reads computed.

A chain operation? C -> B -> A Is this the execution order?

the answer is negative.

In fact, the real process is that after data C starts to change...

  • notifies the watcher of computed B to update, and only resets the dirty data flag Bit dirty =true, the value will not be calculated.

  • Notify page A watcher to update and render, then re-read computed B, and then computed B starts to recalculate.

What does computed mean in vue?

Why can data C notify page A?

The dependency collector of data C will collect it at the same time Watcher to computed B and page A.

Why can data C collect the watcher of page A?

When page A is reading computed B, it takes the opportunity to stuff the watcher of page A to data C , so page A watcher and data C are indirectly related, so data C will collect page A watcher.

As for how the specific code is implemented, it will be explained in the source code analysis below.

So how to update computed?

After being updated by the dependency notification, reset the dirty data flag, and then update the value when the page reads computed.

Vernacular summary

  • computed controls whether to read the cache through watcher.dirty.

  • computed will make [data dependencies] collect [watchers that depend on computed], so when data changes, computed and places that depend on computed will be notified at the same time.

[Recommended related video tutorials:

vuejs entry tutorial, web front-end entry]

The above is the detailed content of What does computed mean in vue?. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Frontend Development with React: Advantages and TechniquesFrontend Development with React: Advantages and TechniquesApr 17, 2025 am 12:25 AM

The advantages of React are its flexibility and efficiency, which are reflected in: 1) Component-based design improves code reusability; 2) Virtual DOM technology optimizes performance, especially when handling large amounts of data updates; 3) The rich ecosystem provides a large number of third-party libraries and tools. By understanding how React works and uses examples, you can master its core concepts and best practices to build an efficient, maintainable user interface.

React vs. Other Frameworks: Comparing and Contrasting OptionsReact vs. Other Frameworks: Comparing and Contrasting OptionsApr 17, 2025 am 12:23 AM

React is a JavaScript library for building user interfaces, suitable for large and complex applications. 1. The core of React is componentization and virtual DOM, which improves UI rendering performance. 2. Compared with Vue, React is more flexible but has a steep learning curve, which is suitable for large projects. 3. Compared with Angular, React is lighter, dependent on the community ecology, and suitable for projects that require flexibility.

Demystifying React in HTML: How It All WorksDemystifying React in HTML: How It All WorksApr 17, 2025 am 12:21 AM

React operates in HTML via virtual DOM. 1) React uses JSX syntax to write HTML-like structures. 2) Virtual DOM management UI update, efficient rendering through Diffing algorithm. 3) Use ReactDOM.render() to render the component to the real DOM. 4) Optimization and best practices include using React.memo and component splitting to improve performance and maintainability.

React in Action: Examples of Real-World ApplicationsReact in Action: Examples of Real-World ApplicationsApr 17, 2025 am 12:20 AM

React is widely used in e-commerce, social media and data visualization. 1) E-commerce platforms use React to build shopping cart components, use useState to manage state, onClick to process events, and map function to render lists. 2) Social media applications interact with the API through useEffect to display dynamic content. 3) Data visualization uses react-chartjs-2 library to render charts, and component design is easy to embed applications.

Frontend Architecture with React: Best PracticesFrontend Architecture with React: Best PracticesApr 17, 2025 am 12:10 AM

Best practices for React front-end architecture include: 1. Component design and reuse: design a single responsibility, easy to understand and test components to achieve high reuse. 2. State management: Use useState, useReducer, ContextAPI or Redux/MobX to manage state to avoid excessive complexity. 3. Performance optimization: Optimize performance through React.memo, useCallback, useMemo and other methods to find the balance point. 4. Code organization and modularity: Organize code according to functional modules to improve manageability and maintainability. 5. Testing and Quality Assurance: Testing with Jest and ReactTestingLibrary to ensure the quality and reliability of the code

React Inside HTML: Integrating JavaScript for Dynamic Web PagesReact Inside HTML: Integrating JavaScript for Dynamic Web PagesApr 16, 2025 am 12:06 AM

To integrate React into HTML, follow these steps: 1. Introduce React and ReactDOM in HTML files. 2. Define a React component. 3. Render the component into HTML elements using ReactDOM. Through these steps, static HTML pages can be transformed into dynamic, interactive experiences.

The Benefits of React: Performance, Reusability, and MoreThe Benefits of React: Performance, Reusability, and MoreApr 15, 2025 am 12:05 AM

React’s popularity includes its performance optimization, component reuse and a rich ecosystem. 1. Performance optimization achieves efficient updates through virtual DOM and diffing mechanisms. 2. Component Reuse Reduces duplicate code by reusable components. 3. Rich ecosystem and one-way data flow enhance the development experience.

React: Creating Dynamic and Interactive User InterfacesReact: Creating Dynamic and Interactive User InterfacesApr 14, 2025 am 12:08 AM

React is the tool of choice for building dynamic and interactive user interfaces. 1) Componentization and JSX make UI splitting and reusing simple. 2) State management is implemented through the useState hook to trigger UI updates. 3) The event processing mechanism responds to user interaction and improves user experience.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools