Vue项目实战(四) :动态展示三级联动数据

1. TypeNav组件属于全局组件,所以需要放置到components文件夹下
2. TypeNav组件的数据属于home仓库下的,所以去store文件夹下的home文件夹下的index.js里请求

//src >>> store >>> home >>> index.js

//引入reqCategoryList
import { reqCategoryList } from "@/api";
//home模块的数据仓库

//state: 仓库存储数据的地方
const state = {
    //第三步:由第二步知道categoryList应该有初始值,所以在state下我们需要给定初始值
    //注意:state中数据默认的初始值不能随便写,应该根据接口的返回值类型去初始化,如果服务器返回的是对象,那么初始值就是对象,如果服务器返回的是数组,那么初始值就是数组
    //第四步:如果在浏览器下的vue开发者工具中vuex下可以找到categoryList对应的数据,就可以去对应的组件(TypeNav)下去拿到仓库中的数据去页面展示数据了
    categoryList: [],
};

//mutations: 修改state的唯一途径
const mutations = {
    //第二步:由第一步解构出mutation之后可以发现没有CATEGORYLIST,所以在mutations下需要给到相应的CATEGORYLIST
    CATEGORYLIST(state, categoryList) {
        state.categoryList = categoryList
    }
};

//actions: 处理action,可以书写自己的业务逻辑,也可以处理异步
const actions = {
    //第一步: 通过api里面的接口函数的调用,向服务器发送请求,获取服务器的数据
    async categoryList({commit}) {
        let result = await reqCategoryList()
        if(result.code == 200) {
            //解构出commit mutation
            commit("CATEGORYLIST",result.data)
        }
    }
};

//getters: 可以理解为计算属性,用于简化仓库数据,让组件获取仓库数据更加的方便
const getters = {};

//对外暴露
export default {
    state,
    mutations,
    actions,
    getters,
}

3.数据已经获取到了,需要去TypeNav组件中展示数据

//components >>> TypeNav >>> index.vue
<template lang="">
    <div class="type-nav">
        <div class="container">
            <h2 class="all">全部商品分类</h2>
            <nav class="nav">
                <a href="###">服装城</a>
                <a href="###">美妆馆</a>
                <a href="###">尚品汇超市</a>
                <a href="###">全球购</a>
                <a href="###">闪购</a>
                <a href="###">团购</a>
                <a href="###">有趣</a>
                <a href="###">秒杀</a>
            </nav>
            <div class="sort">
                <div class="all-sort-list2">
                    <div class="item" v-for="(c1, index) in categoryList" :key="c1.categoryId">
                        <h3><a>{{ c1.categoryName }}</a></h3>
                        <div class="item-list clearfix">
                            <div class="subitem" v-for="(c2, index) in c1.categoryChild" :key="c2.categoryId">
                                <dl class="fore">
                                    <dt><a>{{ c2.categoryName }}</a></dt>
                                    <dd>
                                        <em v-for="(c3, index) in c2.categoryChild" :key="c3.categoryId">
                                            <a>{{ c3.categoryName }}</a>
                                        </em>
                                    </dd>
                                </dl>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
//引入仓库中的数据
import {mapState} from 'vuex';

export default {
    name: 'TypeNav',
    //组件挂载完毕:可以向服务器发请求,获取服务器数据,展示数据
    mounted() {
        //通知Vuex发请求,获取数据,存储于仓库之中
        this.$store.dispatch('categoryList')
    },
    computed: {
        ...mapState({
            //categoryList 对应的右侧的值需要的是一个函数,当需要这个计算属性的时候,这个函数会立即执行一次
            //会注入一个参数state,这个state即为大仓库中的数据(store文件夹下的index.js,这个大仓库包含了home和search)
            //此时可以使用简写形式(当箭头函数中的参数只有一个时,可以省略括号):
            //categoryList:state=>state.home.categoryList;
            categoryList:(state)=>{
                return state.home.categoryList
            }
        })
    }
}
</script>

<style scoped lang="less">
....
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue三级联动数据存入数据库的步骤如下: 1. 创建数据库表结构:首先,需要在数据库中创建适当的表结构,以存储三级联动数据。可以创建三个表,分别表示省、市、区级别的数据,每个表包含相应的字段。 2. 前端界面设计:在Vue的前端界面中,需要设计三级联动的选择框,并通过v-model绑定相应的数据。 3. 获取选择的数据:当用户在界面上选择了省、市、区的选项后,需要通过Vue的事件监听或者watch来获取相应的值。 4. 后端数据传输:将获取到的省、市、区数据传输到后端,可以通过axios或者其他请求库将数据以JSON格式发送给后端。 5. 后端数据处理:在后端接收到省、市、区数据后,可以对数据进行处理,包括数据校验、数据关联等。 6. 数据存入数据库:使用后端语言(例如PHP、Node.js等)操作数据库,将处理后的省、市、区数据存入相应的表中。 7. 数据操作返回:在数据存入数据库后,后端可以返回相应的状态码或者成功信息给前端。 8. 前端提示用户:前端可以根据后端返回的信息,提示用户数据存储成功或者出错的信息。 总结:将Vue三级联动数据存入数据库需要前后端协作,前端负责获取用户选择的数据并发送给后端,后端负责处理数据并存入数据库。通过合理的设计和协作,可以实现三级联动数据的存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值