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.
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
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.
- 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.
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.
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!

HTML and React can be seamlessly integrated through JSX to build an efficient user interface. 1) Embed HTML elements using JSX, 2) Optimize rendering performance using virtual DOM, 3) Manage and render HTML structures through componentization. This integration method is not only intuitive, but also improves application performance.

React efficiently renders data through state and props, and handles user events through the synthesis event system. 1) Use useState to manage state, such as the counter example. 2) Event processing is implemented by adding functions in JSX, such as button clicks. 3) The key attribute is required to render the list, such as the TodoList component. 4) For form processing, useState and e.preventDefault(), such as Form components.

React interacts with the server through HTTP requests to obtain, send, update and delete data. 1) User operation triggers events, 2) Initiate HTTP requests, 3) Process server responses, 4) Update component status and re-render.

React is a JavaScript library for building user interfaces that improves efficiency through component development and virtual DOM. 1. Components and JSX: Use JSX syntax to define components to enhance code intuitiveness and quality. 2. Virtual DOM and Rendering: Optimize rendering performance through virtual DOM and diff algorithms. 3. State management and Hooks: Hooks such as useState and useEffect simplify state management and side effects handling. 4. Example of usage: From basic forms to advanced global state management, use the ContextAPI. 5. Common errors and debugging: Avoid improper state management and component update problems, and use ReactDevTools to debug. 6. Performance optimization and optimality

Reactisafrontendlibrary,focusedonbuildinguserinterfaces.ItmanagesUIstateandupdatesefficientlyusingavirtualDOM,andinteractswithbackendservicesviaAPIsfordatahandling,butdoesnotprocessorstoredataitself.

React can be embedded in HTML to enhance or completely rewrite traditional HTML pages. 1) The basic steps to using React include adding a root div in HTML and rendering the React component via ReactDOM.render(). 2) More advanced applications include using useState to manage state and implement complex UI interactions such as counters and to-do lists. 3) Optimization and best practices include code segmentation, lazy loading and using React.memo and useMemo to improve performance. Through these methods, developers can leverage the power of React to build dynamic and responsive user interfaces.

React is a JavaScript library for building modern front-end applications. 1. It uses componentized and virtual DOM to optimize performance. 2. Components use JSX to define, state and attributes to manage data. 3. Hooks simplify life cycle management. 4. Use ContextAPI to manage global status. 5. Common errors require debugging status updates and life cycles. 6. Optimization techniques include Memoization, code splitting and virtual scrolling.

React's future will focus on the ultimate in component development, performance optimization and deep integration with other technology stacks. 1) React will further simplify the creation and management of components and promote the ultimate in component development. 2) Performance optimization will become the focus, especially in large applications. 3) React will be deeply integrated with technologies such as GraphQL and TypeScript to improve the development experience.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

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),

Atom editor mac version download
The most popular open source editor

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Zend Studio 13.0.1
Powerful PHP integrated development environment