vue-cli2使用pinia(基本使用)

main.js

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

import { createPinia } from 'pinia'
// 创建pinia实例
const pinia = createPinia()
// 挂载到Vue根实例
Vue.use(pinia)

new Vue({
  render: h => h(App)
}).$mount('#app')

store文件夹下的index.js

import { defineStore } from 'pinia'
import { jspangStore } from './jspang'

// 1.定义并导出容器
// 参数1:容器的ID,必须唯一,将来pinia会把所有的容器挂载到根容器
// 参数2:选项对象
// 返回值:一个函数,调用得到容器实例
export const mainStore = defineStore('main', {
    /*
    * 类似于组件的 data ,用于存储全局状态的
    * 1. 必须是函数,这样是为了在服务端渲染的时候避免交叉请求导致的数据状态污染
    * 2. 必须是箭头函数,这是为了更好的 TS 类型推导
    * 
    */
    state: () => {
        return {
            count: 100,
            foo: 'bar',
            phone: '1513933888',
            xiao: '1'
        }
    },

    /*
    * 类似于组件的 computed,用于封装计算属性,有缓存功能
    */
    getters: {
        phoneHidden(state) {
            return state.phone + '你好嘛'
        }
    },
    /*
    * 类似于组件的 methods,封装业务逻辑,修改 state
    */
    actions: {
        add() {
            this.count++
        },
        getList() {
            // console.log(jspangStore().hanglist);
            this.xiao = jspangStore().hanglist
        }
    }
})

1.组件使用state数据

<template>
  <div>

    {{ mainstore.phoneHidden }}
    {{ mainstore.count }}
    {{ mainstore.xiao }}


  </div>
</template>

<script>
// 这里引入一下我们定义的容器
import { mainStore } from '../store/index'
export default {
  data() {
    return {
      name: "小李",
      info: {
        hobby: "网站",
      },
      // 看这里,把这个引入的函数赋值给data里的值
      mainstore: mainStore()
    };
  }
};
</script>

<style>
</style>

2.组件使用actions数据

<template>
  <div>
	<button @click="clickButton()">触发actions函数<button>
  </div>
</template>

<script>
// 这里引入一下我们定义的容器
import { mainStore } from '../store/index'
export default {
  data() {
    return {
      name: "小李",
      info: {
        hobby: "网站",
      },
      // 看这里,把这个引入的函数赋值给data里的值
      mainstore: mainStore()
    };
  },
  methods:{
  	// 我们在actions定义add函数
  	clickButton(){
  		this.mainstore.add()
  	}
  }
};
</script>

<style>
</style>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是搭建后台管理系统的简单步骤: 1. 创建项目 使用 Vue CLI 创建项目,选择 vue3 preset,安装完成后进入项目目录。 ``` vue create my-project cd my-project ``` 2. 安装依赖包 安装 vite、vue-router 和 element-plus。 ``` npm install vite vue-router@4 element-plus --save ``` 安装 pinia 和 echarts。 ``` npm install pinia echarts@5 --save ``` 3. 配置 vite 在根目录下创建 `vite.config.js` 文件,配置 alias 和 server。 ```js import path from 'path' import { defineConfig } from 'vite' export default defineConfig({ resolve: { alias: { '@': path.resolve(__dirname, 'src'), }, }, server: { port: 3000, open: true, }, }) ``` 4. 配置路由 在 `src` 目录下创建 `router` 文件夹,并创建 `index.js` 文件,配置路由。 ```js import { createRouter, createWebHistory } from 'vue-router' import Home from '@/views/Home.vue' const routes = [ { path: '/', name: 'Home', component: Home, }, ] const router = createRouter({ history: createWebHistory(), routes, }) export default router ``` 在 `src` 目录下的 `main.js` 中引入路由。 ```js import { createApp } from 'vue' import App from './App.vue' import router from './router' const app = createApp(App) app.use(router) app.mount('#app') ``` 5. 配置状态管理 在 `src` 目录下创建 `store` 文件夹,并创建 `index.js` 文件,配置状态管理。 ```js import { createPinia } from 'pinia' const store = createPinia() export default store ``` 在 `src` 目录下的 `main.js` 中引入状态管理。 ```js import { createApp } from 'vue' import App from './App.vue' import router from './router' import store from './store' const app = createApp(App) app.use(router) app.use(store) app.mount('#app') ``` 6. 配置 UI 框架 在 `src` 目录下的 `main.js` 中引入 element-plus。 ```js import { createApp } from 'vue' import App from './App.vue' import router from './router' import store from './store' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' const app = createApp(App) app.use(router) app.use(store) app.use(ElementPlus) app.mount('#app') ``` 7. 配置 echarts 在 `src` 目录下的 `main.js` 中引入 echarts。 ```js import { createApp } from 'vue' import App from './App.vue' import router from './router' import store from './store' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' import * as echarts from 'echarts' const app = createApp(App) app.use(router) app.use(store) app.use(ElementPlus) app.config.globalProperties.$echarts = echarts app.mount('#app') ``` 8. 创建页面 在 `src` 目录下创建 `views` 文件夹,并创建页面组件。 9. 创建布局 在 `src` 目录下创建 `layouts` 文件夹,并创建布局组件。 10. 配置路由和布局 在 `router/index.js` 中配置路由和布局。 ```js import { createRouter, createWebHistory } from 'vue-router' import Layout from '@/layouts/Layout.vue' import Home from '@/views/Home.vue' const routes = [ { path: '/', component: Layout, children: [ { path: '', name: 'Home', component: Home, }, ], }, ] const router = createRouter({ history: createWebHistory(), routes, }) export default router ``` 11. 运行项目 在项目根目录下运行 `npm run dev`,打开浏览器访问 `http://localhost:3000` 查看效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值