How to understand Vue's simple state management store mode

How to understand Vue's simple state management store mode

Overview

The implementation idea of ​​the store state management mode is very simple, which is to define a store object with a state attribute to store shared data and methods to operate these shared data. In the component, store.state shared data is used as part or all of data. When changing the shared data in the store.state object, the interface provided by the store must be called to change the shared data.

The following is a simple todo-list demo to introduce the store state management mode.

1. Define store.js

//store.js
export const store = {
    state: {
        todos:
            {text: 'Write Chinese homework', done: false},
            {text: 'Do math test', done: false}
        ]
    },
    addTodo(str){
        const obj = {text: str, done: false}
        this.state.todos.push(obj)
    },
    setDone(index){
        this.state.todos[index].done = true
    }
}

2. Components using store.js

//A.vue
<template>
    <div class="A">
        I am component A<ul>
           <li v-for="(todo,index) in todos" 
           :key="index" :class="todo.done?'done':''" @click="setDone(index)">
           {{todo.text}}
           </li>
       </ul>
    </div>
</template>

<script>
import {store} from '../store/store.js'
export default {
    name: 'A',
    data(){
        return store.state
    },
    methods: {
        setDone(index){
            store.setDone(index)
        }
    }
}
</script>

<style scoped>
.A{
    background: red;
    color: white;
    padding: 20px;
}
.A li.done{
    background: green;
}
</style>
//B.vue
<template>
    <div class="B">
        <div>
            I am component B, enter the task in the input box below and add the task in component A</div>
        <input type="text" v-model="text">
        <button @click="addTodo">add todo</button>
    </div>
</template>

<script>
import {store} from '../store/store.js'
export default {
    name: 'B',
    data(){
        return {
            text: ''
        }
    },
    methods:{
        addTodo(){
            if(this.text){
                store.addTodo(this.text)
            }
        }
    }
}
</script>

<style scoped>
.B{
    background: yellow;
    padding: 20px;
}
</style>
//App.vue
<template>
  <div id="app">
    <A />
    <B />
  </div>
</template>

<script>

import A from './components/A.vue'
import B from './components/B.vue'

export default {
  name: 'App',
  components:
    A,
    B
  }
}
</script>

3. Achieve results

It can be seen that the data displayed in component A is added and modified in component B, which is data communication through data sharing. The simple store mode is used in this way.

The above is the details of how to understand the store mode of Vue simple state management. For more information about the store mode of Vue simple state management, please pay attention to other related articles on 123WORDPRESS.COM!

You may also be interested in:
  • How to use provide to implement state management in Vue3
  • Vue front-end development auxiliary function state management detailed example
  • The practical process of login status management in the vuex project
  • Quickly master how to get started with Vuex state management in Vue3.0
  • Application of mapState idea in vuex
  • How to use vuex in Vue project
  • Use of vuex namespace
  • Vue state management: using Pinia instead of Vuex

<<:  Cause Analysis and Solution of I/O Error When Deleting MySQL Table

>>:  Ubuntu Basic Tutorial: apt-get Command

Recommend

How to use dynamic parameters and calculated properties in Vue

1. Dynamic parameters Starting from 2.6.0, you ca...

Detailed explanation of script debugging mechanism in bash

Run the script in debug mode You can run the enti...

How to build php7 with docker custom image

First, perform a simple Docker installation. To c...

MySQL 8.0.11 MSI version installation and configuration graphic tutorial

This article shares the installation and configur...

Detailed explanation of MySQL three-value logic and NULL

Table of contents What is NULL Two kinds of NULL ...

Detailed explanation of pipeline and valve in tomcat pipeline mode

Preface In a relatively complex large system, if ...

MySQL 8.0.18 installation and configuration method graphic tutorial

This article records the installation and configu...

Implementing shopping cart function based on vuex

This article example shares the specific code of ...

How to make Python scripts run directly under Ubuntu

Let’s take the translation program as an example....

Summary of 4 solutions for returning values ​​on WeChat Mini Program pages

Table of contents Usage scenarios Solution 1. Use...

How to implement web page compression in Nginx optimization service

Configure web page compression to save resources ...

Use js to write a simple snake game

This article shares the specific code of a simple...