elementUI参考学习 vue运行问题 以及组件style样式设置的区别

本文探讨了在使用Vue.js和ElementUI时遇到的问题,包括组件样式设置,如`scoped`和`/deep/`的用法,`!important`的优先级。还介绍了如何通过ID避免待办事项的下标bug,以及运用`filter`筛选数据。此外,文章阐述了如何在Vuex中分割组件,并展示了配置文件如`vue.config.js`和路由设置,以及ElementUI的表单验证和自动打开谷歌浏览器的设置。
摘要由CSDN通过智能技术生成

组件样式 scoped 和 /deep/ 加scoped 后不会修改其他组件的 加/deep/ 后就可以修改组件内部的 加!important 强制优先级最高覆盖样式 */

在这里插入图片描述

<style scoped>
/* 加scoped    后不会修改其他组件的  
   加/deep/ 后就可以修改组件内部的    加!important  强制优先级最高覆盖样式 */
/deep/.el-pager li.active {
   
  background-color: red !important;
}
</style>

id来找下标,防止待办事件的下标bug (点击未生效)

在这里插入图片描述

filter 筛选出不一样的并返回需要的

在这里插入图片描述

分割组件vuex 在index.js导入组件(todos.js (为导出组件))

在这里插入图片描述
index.js

import axios from 'axios'
import Vue from 'vue'
import Vuex from 'vuex'
import todos from './modules/todos'
Vue.use(Vuex)

const store = new Vuex.Store({
   
  // 严格模式下,控制state的修改只能通过mutations来完成
  strict: true,
  // modules 模块拆分
  modules: {
   
    todos
  }
})

export default store

和index.js同级 modules/todo.js

export default {
   
  namespaced: true,
  state(){
   
    return {
   
      // 全部, 未完成,已完成
      conStr:'全部', 
      list: JSON.parse(localStorage.getItem('todos')) || [
        {
    id: 100, name: "吃饭", isDone: true },
        {
    id: 201, name: "睡觉", isDone: false },
        {
    id: 103, name: "打豆豆", isDone: true }
      ]
    }
  },
  getters:{
   
    // 根据list和conStr来计算当前要展示的内容
    newList(state){
   
      if(state.conStr === '未完成'){
   
        return state.list.filter(it => it.isDone === false)
      } else if(state.conStr === '已完成'){
   
        return state.list.filter(it => it.isDone )
      } else {
   
        return state.list
      }
    }
  },
  mutations: {
   
    // state:  自动获取
    // name: 传入的
    addTodo(state, name){
   
      console.log(state, name)
      // 添加数据
      state.list.push({
   
        id: Date.now(),
        name,
        isDone: false
      })
    },
    // 删除
    delTodo(state, id){
   
      // 找到对应的下标
      const idx = state.list.findIndex(it => it.id === id)
      // 做删除
      state.list.splice(idx, 1)
    },
    // 修改 id 对应元素的 isDone
    changeIsDone(state, id){
   
      const idx = state.list.findIndex(it => it.id === id)
      console.log('changeIsDone', idx)
      // 找到下标为idx的元素,切换它的状态
      state.list[idx].isDone = !state.list[idx].isDone
    },
    // 修改conStr
    changeConStr(state, val){
   
      state.conStr = val
    },
    // 统一修改全部的状态
    // val就是要改成的值
    changeAllIsDone(state, val){
   
      state.list.forEach(it => it.isDone = val)
    }
  }
}

TodoFooter.vue

<template>
  <footer class="footer">
    <span class="todo-count">总计:<strong>{
   {
   list.length}}</strong></span>
    <ul class="filters">
      <li @click="change('全部')">
        <a :class="{selected: conStr==='全部'}" href="javascript:;" >全部</a>
      </li>
      <li @click="change('未完成')">
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

All rivers run in to the sea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值