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

Solution to IDEA not being able to connect to MySQL port number occupation

I can log in to MYSQL normally under the command ...

Common pitfalls of using React Hooks

React Hooks is a new feature introduced in React ...

Analyze the usage and principles of Vue's provide and inject

First, let's talk about why we use provide/in...

Implementing CommonJS modularity in browsers without compilation/server

Table of contents introduction 1. What is one-cli...

Based on JavaScript ES new features let and const keywords

Table of contents 1. let keyword 1.1 Basic Usage ...

Detailed explanation of ES6 Promise usage

Table of contents What is a Promise? Usage of rej...

How to use fdisk to partition disk in Linux

Commonly used commands for Linux partitions: fdis...

Html+CSS floating advertisement strip implementation

1.html part Copy code The code is as follows: <...

How to modify the scroll bar style in Vue

Table of contents First of all, you need to know ...

Causes and solutions for MySQL data loss

Table of contents Preface Problem Description Cau...

Analysis of the use of the MySQL database show processlist command

In actual project development, if we have a lot o...

How to configure Linux CentOS to run scripts regularly

Many times we want the server to run a script reg...