This time I will show you how to use vuex in an advanced way, and what are the precautions for advanced use of vuex. The following is a practical case, let's take a look.
1. Getter
Let’s first recall the code of the previous articlecomputed:{ getName(){ return this.$store.state.name } }Assume that the logic has changed now, and the data we ultimately expect to get (getName) is based on complex calculations on this.$store.state.name. This getName happens to be used in many places, so we have to copy several copies. vuex provides us with For getter, please see the code (file location/src/store/index.js)
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ // 类似 vue 的 data state: { name: 'oldName' }, // 类似 vue 的 computed -----------------以下5行为新增 getters:{ getReverseName: state => { return state.name.split('').reverse().join('') } }, // 类似 vue 里的 mothods(同步方法) mutations: { updateName (state) { state.name = 'newName' } } })Then we can use the file location/src/main.js
computed:{ getName(){ return this.$store.getters.getReverseName } }In fact, getter is more than It only plays the role of encapsulation. Like Vue's computed attribute, it will cache the result data. Only when the dependency changes, it needs to be recalculated.
2. actions and $dispatch
If you are careful, you must have noticed that the mutations header in my previous code has comments similar to the methods (synchronous methods) in vueWhy should it be after methods? What about the synchronous method? Mutation can only be a synchronous function, can only be a synchronous function, can only be a synchronous function!! Please see the explanation of vuex: Now imagine that we are debugging an app and Observe the mutation log in devtool. Every time a mutation is recorded, devtools needs to capture snapshots of the previous state and the next state. However, in the above example the callback in the asynchronous function in the mutation makes this impossible: because when the mutation fires, thecallback function has not yet been called, devtools does not know when the callback function actually Called - Essentially any state changes made within the callback function are untraceable. So what if we want to trigger an asynchronous operation? The answer is: action $dispatch, we continue to modify the code below store/index.js
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ // 类似 vue 的 data state: { name: 'oldName' }, // 类似 vue 的 computed getters:{ getReverseName: state => { return state.name.split('').reverse().join('') } }, // 类似 vue 里的 mothods(同步方法) mutations: { updateName (state) { state.name = 'newName' } }, // 类似 vue 里的 mothods(异步方法) -------- 以下7行为新增 actions: { updateNameAsync ({ commit }) { setTimeout(() => { commit('updateName') }, 1000) } } })Then we can use it like this in our vue page
methods: { rename () { this.$store.dispatch('updateNameAsync') } }When the project becomes more and more When it gets bigger, a single store file is definitely not what we want, so there is modularization. Assume that there are these 2 files in the src/store directory moduleA.js
export default { state: { ... }, getters: { ... }, mutations: { ... }, actions: { ... } }moduleB.js
export default { state: { ... }, getters: { ... }, mutations: { ... }, actions: { ... } }Then we can change index.js to look like this
import moduleA from './moduleA' import moduleB from './moduleB' export default new Vuex.Store({ modules: { moduleA, moduleB } })I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website! Recommended reading:
How to use v-model and promise to implement the vue pop-up component
How to use JS implements file drag and drop upload
The above is the detailed content of How to use vuex advancedly. For more information, please follow other related articles on the PHP Chinese website!

Whether to choose Python or JavaScript depends on the project type: 1) Choose Python for data science and automation tasks; 2) Choose JavaScript for front-end and full-stack development. Python is favored for its powerful library in data processing and automation, while JavaScript is indispensable for its advantages in web interaction and full-stack development.

Python and JavaScript each have their own advantages, and the choice depends on project needs and personal preferences. 1. Python is easy to learn, with concise syntax, suitable for data science and back-end development, but has a slow execution speed. 2. JavaScript is everywhere in front-end development and has strong asynchronous programming capabilities. Node.js makes it suitable for full-stack development, but the syntax may be complex and error-prone.

JavaScriptisnotbuiltonCorC ;it'saninterpretedlanguagethatrunsonenginesoftenwritteninC .1)JavaScriptwasdesignedasalightweight,interpretedlanguageforwebbrowsers.2)EnginesevolvedfromsimpleinterpreterstoJITcompilers,typicallyinC ,improvingperformance.

JavaScript can be used for front-end and back-end development. The front-end enhances the user experience through DOM operations, and the back-end handles server tasks through Node.js. 1. Front-end example: Change the content of the web page text. 2. Backend example: Create a Node.js server.

Choosing Python or JavaScript should be based on career development, learning curve and ecosystem: 1) Career development: Python is suitable for data science and back-end development, while JavaScript is suitable for front-end and full-stack development. 2) Learning curve: Python syntax is concise and suitable for beginners; JavaScript syntax is flexible. 3) Ecosystem: Python has rich scientific computing libraries, and JavaScript has a powerful front-end framework.

The power of the JavaScript framework lies in simplifying development, improving user experience and application performance. When choosing a framework, consider: 1. Project size and complexity, 2. Team experience, 3. Ecosystem and community support.

Introduction I know you may find it strange, what exactly does JavaScript, C and browser have to do? They seem to be unrelated, but in fact, they play a very important role in modern web development. Today we will discuss the close connection between these three. Through this article, you will learn how JavaScript runs in the browser, the role of C in the browser engine, and how they work together to drive rendering and interaction of web pages. We all know the relationship between JavaScript and browser. JavaScript is the core language of front-end development. It runs directly in the browser, making web pages vivid and interesting. Have you ever wondered why JavaScr

Node.js excels at efficient I/O, largely thanks to streams. Streams process data incrementally, avoiding memory overload—ideal for large files, network tasks, and real-time applications. Combining streams with TypeScript's type safety creates a powe


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

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

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

SublimeText3 Linux new version
SublimeText3 Linux latest version

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.

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.
