• Vuex的简单购物车案例以及页面刷新数据丢失的解决方法


    友友们首先需要对vue框架有一点的了解,后端开发对于前端的框架和ui库会使用就行,直接上页面:

    1.购物车页面

    1. <template>
    2. <div>
    3. <h1>vuex的使用简单实现购物车h1>
    4. <h1>{{$store.state.user.username}}h1>
    5. <h1>{{user.username}}h1>
    6. <h1>{{mycar}}h1>
    7. <input type="button" value="添加购物车" @click="insertcar">
    8. <input type="button" value="删除购物" @click="deletecar ">
    9. <input type="button" value="购物车" @click="Tomar">
    10. <input type="button" value="清空购物车" @click="Killmycar">
    11. div>
    12. template>
    13. <script>
    14. import {mapState,mapMutations} from "vuex";
    15. const option = {
    16. computed:{
    17. ...mapState(['user','mycar'])
    18. },
    19. data: function () {
    20. return {}
    21. },
    22. methods:{
    23. ...mapMutations(['updatename','insert','delateorderone',"killmycar"]),
    24. insertcar(){
    25. const re={
    26. id:"1",
    27. name:"张三",
    28. price:"100",
    29. }
    30. this.insert(re)
    31. const r1={
    32. id:"2",
    33. name:"李四",
    34. price:"1020",
    35. }
    36. this.insert(r1)
    37. const r2={
    38. id:"3",
    39. name:"李四",
    40. price:"1020",
    41. }
    42. this.insert(r2)
    43. },
    44. deletecar(){
    45. this.delateorderone(1)
    46. },
    47. Tomar(){
    48. this.$router.push("/404")
    49. },
    50. Killmycar(){
    51. this.killmycar()
    52. }
    53. }
    54. };
    55. export default option
    56. script>

    2.购物车页面

    1. <template>
    2. <div>
    3. <h1>获取购物车的数据h1>
    4. <h1>{{mycar}}h1>
    5. div>
    6. template>
    7. <script>
    8. import {mapState} from 'vuex'
    9. const option={
    10. computed:{
    11. ...mapState(['mycar'])
    12. },
    13. data:function (){
    14. return{
    15. }
    16. }
    17. }
    18. export default option
    19. script>

    3.vuex的js文件

    1. import Vue from 'vue'
    2. import Vuex from 'vuex'
    3. import createPersistedState from 'vuex-persistedstate'
    4. Vue.use(Vuex)
    5. //定义全局的共享数据
    6. export default new Vuex.Store({
    7. //定义全局共享实例,可以是一个或者多个
    8. state: {
    9. user:{
    10. username:""
    11. },
    12. mycar:[],
    13. },
    14. getters: {
    15. },
    16. //定义修改数据的方法
    17. mutations: {
    18. updatename(state,name){
    19. state.user.username=name
    20. },
    21. insert(state,items){
    22. state.mycar.push(items)
    23. },
    24. //删除一个
    25. delate(state){
    26. state.mycar.splice(0,1)
    27. },
    28. //删除指定的元素
    29. delateorderone(state,id){
    30. for(var i=0;imycar.length;i++){
    31. if(state.mycar[i].id==id){
    32. state.mycar.splice(i,1);
    33. }
    34. }
    35. },
    36. //清空购物车
    37. killmycar(state){
    38. state.mycar.splice(0,1000)
    39. }
    40. },
    41. //定义异步操作
    42. actions: {
    43. },
    44. modules: {
    45. },
    46. //持久化操作
    47. plugins: [createPersistedState({
    48. storage: window.sessionStorage
    49. })]
    50. })

    对于vuex在页面刷新的时候数据丢失的问题:采用的(vuex-persistedstate)的一个插件

    简单的原理:就是自动将vuex中的存放的信息保存到sessionStorage中在页面刷新的时候它会去判断sessionStorage中是否有值,如果有就会自动取出这个值

     
    

  • 相关阅读:
    SuperEdge易学易用系列-一键搭建SuperEdge集群
    一文让你彻底掌握【Python中的filter函数】
    C++中struct和class的区别
    数据的存储--MongoDB文档存储
    惠普战99移动工作站: 第十三代英特尔酷睿处理器和惠普一站式AI应用开发方案的完美融合
    java基础入门(一)
    使用鸿蒙HarmonyOs NEXT 开发 快速开发 简单的购物车页面
    64-基于51单片机的可调直流稳压电源Proteus仿真(源码+仿真+全套资料)
    算法学习day02(链表/哈希表/字符串)
    当添加一个键值对元素时,HashMap发生了什么?
  • 原文地址:https://blog.csdn.net/qq_53909398/article/details/127870706