Home Web Front-end JS Tutorial Introduction to project structure and configuration of vuex

Introduction to project structure and configuration of vuex

Apr 12, 2018 am 10:09 AM
vuex introduce Configuration

This time I will bring you an introduction to the project structure and configuration of vuex. What are the precautions when using the vuex project structure and configuration? The following is a practical case, let's take a look.

First of all, here is a serious piece of "advice" from the official website:

Rules that vuex needs to abide by:

1. Application-level status should be concentrated into a single store object.

2. Submitting a mutation is the only way to change the state, and this process is synchronous.

3. All asynchronous logic should be encapsulated in action.

FileDirectory structure

Relationship between files:

store folder - stores vuex series files

store.js - introduce vuex, set state data, introduce getter, mutation and action

getter.js - Get the status in the store

mutation.js - where functions used to change the state in the store are stored

action.js - Submit mutation to modify the state tactfully, and can operate asynchronously

Simple and common way of writing

store.js file:

import Vue from 'vue'
import Vuex from 'vuex'
import actions from './actions'
import mutations from './mutations'
Vue.use(Vuex)
const state = {
 a: '初始值',
 b: 'balabala...'
}
export default new Vuex.Store({
  state,
  actions,
  mutations
})
Copy after login

In the main.js file (inject the store from the root component, just like injecting the router):

By registering the store option in the root instance, the store instance will be injected into all child components under the root component, and the child components can be accessed through this.$store.

import store from './store/index'
new Vue({
 el: '#app',
 router,
 store,
 ...
})
Copy after login

Simple configuration of Getter.js (store's calculated property, accepts state as parameter)

export default {
  doneTodos: state = >{
   return state.todos.filter(todo = >todo.done)
  }
}
Copy after login

Get (inside the calculated property of a component):

computed: {
 doneTodosCount () { 
  return this.$store.getters.doneTodosCount 
 }
}
Copy after login

Simple configuration of getter properties that can pass parameters

export default{
 getTodoById: (state) => (id) => { 
  return state.todos.find(todo => todo.id === id) 
 }
}
Copy after login

Get (inside the calculated property of a certain component):

computed: {
 getTodoById() { 
  return this.$store.getters.getTodoById(‘参数')
 }
}
Copy after login

mutation.js simple configuration:

export default {
  increment(state) {
   //变更状态
   state.count++
  }
}
Copy after login

Trigger (in component)

this.$store.commit(state,payload)
actions.js简单配置:
export default{
 action (context) {
 //异步操作
  setTimeout(()=>{
   //变更状态
   context.commit('mutationFunName',value)
  })
 }
}
Copy after login

Trigger (component)

this.$store.dispatch('mutationFunctionName')
2018-04-07 18:13:34
Copy after login

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:

What are the new features of vue-cli 3.0.x after upgrading to webpack4

How to implement JS Deduplication algorithm within JSON array

The above is the detailed content of Introduction to project structure and configuration of vuex. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
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

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

The working principle and configuration method of GDM in Linux system The working principle and configuration method of GDM in Linux system Mar 01, 2024 pm 06:36 PM

The working principle and configuration method of GDM in Linux system

Understand Linux Bashrc: functions, configuration and usage Understand Linux Bashrc: functions, configuration and usage Mar 20, 2024 pm 03:30 PM

Understand Linux Bashrc: functions, configuration and usage

MyBatis Generator configuration parameter interpretation and best practices MyBatis Generator configuration parameter interpretation and best practices Feb 23, 2024 am 09:51 AM

MyBatis Generator configuration parameter interpretation and best practices

How to configure workgroup in win11 system How to configure workgroup in win11 system Feb 22, 2024 pm 09:50 PM

How to configure workgroup in win11 system

Introduction to the skills and attributes of Hua Yishan Heart of the Moon Lu Shu Introduction to the skills and attributes of Hua Yishan Heart of the Moon Lu Shu Mar 23, 2024 pm 05:30 PM

Introduction to the skills and attributes of Hua Yishan Heart of the Moon Lu Shu

PyCharm Beginner's Guide: Comprehensive Analysis of Replacement Functions PyCharm Beginner's Guide: Comprehensive Analysis of Replacement Functions Feb 25, 2024 am 11:15 AM

PyCharm Beginner's Guide: Comprehensive Analysis of Replacement Functions

Detailed introduction of Samsung S24ai functions Detailed introduction of Samsung S24ai functions Jun 24, 2024 am 11:18 AM

Detailed introduction of Samsung S24ai functions

What is Dogecoin What is Dogecoin Apr 01, 2024 pm 04:46 PM

What is Dogecoin

See all articles