赞
踩
前期回顾
前言:
简介:
动画库图例:
vue动画下载、引入、使用
- cnpm install animate.css --save yarn add animate.css // 安装
- import 'animate.css' // 在哪用在哪引入
-
- <transition-group appear name="animate__animated animate__bounce" enter-active-class="animate__zoomInDown" leave-active-class="animate__zoomOutDown">
- <!-- //这里包住要动画内容 -->
- xxx
-
- <!-- 动画结束 -->
- </transition-group>
手写动画
手写动画源码:
- <template>
- <div>
- <button @click="show=true">显示</button>
- <button @click="show=false">隐藏</button>
- <transition name="ani">
- <p v-show=show>学习过渡动画</p>
- </transition>
- </div>
- </template>
- <script>
- import { ref } from "vue";
- export default {
- components: {},
- setup() {
- const show = ref(false);
-
- return {
- show,
- };
- },
- };
- </script>
- <style lang="scss" scoped>
- //进入和离开
- .ani-enter-from,
- .ani-leave-to {
- opacity: 0;
- }
- // 进入过程,和离开过程
- .ani-enter-active,
- .ani-leave-active {
- transition: all 1s;
- }
- </style>
-
-
项目开始
全选:
- /*
- 位置:子组件components/myFooter.vue
- */
- <template>
- <div class="footer">
- <div>
- <input type="checkbox" v-model="$store.state.vmCkAll" @click="ckAll($event)">全选
- </div>
- <div>总价{{$store.getters.priceAll}}</div>
- <div v-if="$store.state.edit">去支付{{$store.getters.num}}</div>
- <div v-else @click="del">删除</div>
- </div>
- </template>
- <script>
- import { useStore } from "vuex";
-
- export default {
- components: {},
- setup() {
- const store = useStore();
- // 全选逻辑
- function ckAll(e) {
- store.commit("ckAll", e.target.checked);
- }
- // 删除逻辑
- function del(){
- store.commit('del')
- }
- return {
- ckAll,
- del
- };
- },
- };
- </script>
- <style lang="scss" scoped>
- .footer {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 0 15px;
- width: 100%;
- height: 50px;
- background-color: red;
- color: #fff;
- }
- </style>
全选、反选删除
- /*
- 位置:store/index.js
- */
- import { createStore, } from 'vuex'
- import axios from 'axios'
- import persist from 'vuex-persistedstate'
- export default createStore({
- state: {
- // 原数据
- data: [],
- vmCkAll: false,
- edit: true,
- //备份数据,用于过滤
- data1: [],
- text: '',
-
-
- },
- getters: {
- // num(state) {
- // // num形参就是后面的数字,e形参就是data每一项 ,
- // return state.data.reduce((num, e) => num += e.checked && e.num, 0)
- // },
- // priceAll(state) {
- // return state.data.reduce((num, e) => num += e.checked && e.num * e.price, 0)
- // }
-
- num(state) {
- return state.data.reduce((num, item) => num += item.checked && item.num, 0)
- },
- priceAll(state) {
- return state.data.reduce((num, item) => num += item.checked && item.num * item.price, 0)
- }
- },
- mutations: {
- changeDate(state, val) {
- // 在mutations 接受actions,第一步请求数据
- if (localStorage.getItem("vuex")) {
- //json数据刷新会重新请求数据,直接赋值list不会实现持久化所以,本地存储有用本地的没有用json
- state.data = JSON.parse(localStorage.getItem("vuex")).data;
- state.data1 = JSON.parse(localStorage.getItem("vuex")).data;
- } else {
- state.data = val;
- state.data1 = val;
-
- }
- },
- text(state, val) {
- state.text = val
- },
-
- // 全选逻辑
- ckAll(state, ckAllChecked) {
- // 将全选的状态赋值数据所有的状态,点击全选全部选中
- state.data.forEach(e => e.checked = ckAllChecked)
- },
- //反选逻辑
- ck(state, propsId) {
- console.log(propsId);
- // 循环原数据如果点击传过来的id=vuex的id,则子复选框状态改变
- state.data.forEach(item => item.id == propsId ? item.checked = !item.checked : '')
- state.vmCkAll = state.data.every(item => item.checked)
- },
- // 编辑文字切换
- edit(state) {
- state.edit = !state.edit
- },
- //删除
- del(state) {
- // 全选删除逻辑,就是将没被勾选的赋值原数据
- state.data = state.data.filter(item => !item.checked)
- state.vmCkAll = false
- },
- // 过滤
- okBtn(state) {
- //备份数据,用于过滤
- state.data = state.data1.filter(e => e.name.includes(state.text))
- }
- },
- actions: { //异步
- getData(context) {
- axios.get('/data.json').then(res => {
- // console.log(res);
- context.commit('changeDate', res.data.cartData)
- })
- }
- },
-
- //plugins插件 persist 持久
- plugins: [persist({
- storage: localStorage, // 定义数据存储的方式 值可以是localStorage 也可以是sessionStorage 或cookies
- reducer(state) {
- return { // 定义需要指定存储的数据
- data: state.data
- }
- }
- })]
- })
源码发在资源上了,希望看后对小伙伴与帮助
我是浪哥。
我热爱 vue.js , ElementUI , Element Plus 相关技术栈,我的目标是给大家分享最实用、最有用的知识点,希望大家都可以早早下班,并可以飞速完成工作,淡定摸鱼
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。