当前位置: 首页 > news >正文

网站你懂我意思正能量免费软件wordpress 物流信息

网站你懂我意思正能量免费软件,wordpress 物流信息,会做网站的公司,附近网站建设公司1、 功能效果 在线预览#xff1a;https://szhihao.gitee.io/comment/ gitee仓库地址#xff1a;https://gitee.com/szhihao/comment 2、实现的具体技术点 根据不同的人名可以进行评论#xff08;tap切换#xff09; 对进行的评论可以无限进行回复#xff08;递归组件和…1、 功能效果 在线预览https://szhihao.gitee.io/comment/ gitee仓库地址https://gitee.com/szhihao/comment 2、实现的具体技术点 根据不同的人名可以进行评论tap切换 对进行的评论可以无限进行回复递归组件和数据tree处理 判断评论是否为空 localStorage 本地存储的使用 vuex 的使用 使用的插件 {name: vite-project,private: true,version: 0.0.0,type: module,scripts: {dev: vite,build: vite build,preview: vite preview},dependencies: {delfin: ^1.2.5,vue: ^3.3.4},devDependencies: {types/node: ^20.5.0,vitejs/plugin-vue: ^4.2.3,vite: ^4.4.5} }vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue// 使用path 需要安装 npm install types/node --save-dev import path from path;//这个path用到了上面安装的types/node // https://vitejs.dev/config/ export default defineConfig({plugins: [vue()],resolve:{alias:{: path.resolve(./src) // 代替src},extensions:[.js,.vue] // 可以省略.js 和.vue 后缀名} })app.vue文件 1、定义tab结构作为评论的人名切换 templatedivh1{{ useUserInfoStore.userInfo.userName }}/h1/divbutton:class{bg:item.id useUserInfoStore.userInfo.id }v-for(item,index) in tapList:keyitem.idclickuseUserInfoStore.setUserInfo(item){{item.userName}}/buttonhrcomment-one/comment-one /template script setup import useUserInfo from ./stort/index.js import {reactive,ref} from vue; const tabindex ref(-1) //tab的默认值 -1 什么也不显示 import commentOne from ./components/commentOne.vue const useUserInfoStore useUserInfo() // 定义人名字数据处理 const tapList reactive([{id:1,userName:孙志豪},{id:2,userName: 王五,},{id:3,userName: 小明,} ])/script style scoped .bg {background-color: skyblue; } /style2、components/commentOne.vue 当前组件是显示评论的组件里面是 formatTree 数据处理的操作 templatedivptextarea v-modeltextValue/textarea/ppbutton clickaddComment提交评论/button/p/divdivcomment-comp :commentDatadata.commentData add-replyaddReply removeremoveHandler/comment-comp/div /templatescript setup import {ref,reactive} from vue; import useUserInfo from /stort/index.js // 使用vuex const useUserInfoStore useUserInfo() const textValue ref() import commentComp from ./commentComp.vue let data reactive({commentData:formatTree(getComment(one)) // 数据tree处理 })const addComment () {//判空处理if(textValue.value undefined || textValue.value null || textValue.value.trim() ){alert(请输入评论)return}// 读取vuex中的数据const {id, userName} useUserInfoStore.userInfolet commentInfo {id: new Date().getTime(),pid: 0,uid: id,userName,comment: textValue.value}setComment(one, commentInfo)// 第一次追加数据解决本地存上数据刷新才会显示data.commentData.unshift(commentInfo)textValue.value }const addReply (item, replyText) {if(replyText undefined || replyText null || replyText.trim() ) {alert(请输入评论)return}const {id, userName} useUserInfoStore.userInfo;const replyInfo {id: new Date().getTime(),pid: item.id,uid: id,userName,comment: replyText,recoverName:item.userName}// 有子级就将当前数据放进去;(item.children || (item.children [])).unshift(replyInfo)setComment(one, replyInfo); }// 本地数据的存储 // 1、将本地的数据先取出 // 2、追加新的数据 // 3、将数据转换字符串存入本地function setComment(field, comment) {const commentList JSON.parse(localStorage.getItem(field) || [])commentList.unshift(comment)localStorage.setItem(field, JSON.stringify(commentList)) }// 本地取出数据 function getComment(field) {let arr JSON.parse(localStorage.getItem(field) || [])return arr.reverse() }// 处理数据处理成tree的结构 function formatTree(data) {const result []const map {}// 以id为属性名作为每一项data.forEach(item {map[item.id] item})data.forEach(item {// 再次循环data数据通过pid可以读取到map中父级的数据,因为子级的pid 是父级的 id 给的子级的pid 父级的 idconst parent map[item.pid]if(parent) {//如果是父级其它数据就是子级// 如果是父级的话并且有 children字段将当前的子级的数据放到children里面没有的话开一个新数组;(parent.children || (parent .children [])).unshift(item)}else {// 循环完了当找找没有子级的数据就将数据放到 result 结果中最后返回result.unshift(item)}})return result } /scriptstyle scoped/style 3、components/commentComp.vue 该组件主要作用是递归组件无限评论的核心回复功能的实现 templateliv-for(item,index) in commentData:keyitem.idp {{index 1}}楼 pid:{{item.pid}} --- {{handlerText(item)}} : {{ item.comment }} a hrefjavascript:; clicksetRepFlag(item)回复/a/pdiv v-ifitem.flagptextarea v-modelitem.replyText/textarea/ppbutton clickaddReply(item)提交评论/button/p/divdiv v-ifitem.childrenul!-- 在组件中自己使用自己--comment-comp v-ifitem.children :commentDataitem.children add-replyaddReply /comment-comp/ul/div/li/templatescript setup const props defineProps({commentData: Array })// 子穿父 vue3 新语法 Emits const emit defineEmits([addReply,remove])const setRepFlag (item) {item.flag !item.flag } // 提交评论 const addReply (item) {let replyText item.replyTextemit(addReply,item,replyText)item.flag falseitem.replyText } // 回复人处理 function handlerText(item) {let recoverName item.recoverName ? item.recoverName : return item.recoverName item.userName ? 我说 : item.userName recoverName 说 }/scriptstyle scoped li{width: 100%;height: 100%;background-color: skyblue; } /style4、vite-project/src/stort/index.js import {createStore} from delfin // delfin 插件使用vuex export default createStore({state:{userInfo:{id:1,userName:孙志豪}},actions:{setUserInfo(store,userInfo) {store.userInfo userInfo}} })
http://www.hkea.cn/news/14461125/

相关文章:

  • 网站php环境搭建自媒体平台注册入口快看点
  • 团购网站模块潍坊建设局网站
  • 替别人做网站做音乐相册的网站
  • 动画做视频在线观看网站夜晚必备直播软件
  • 法律网站开发青岛网上房地产网签查询
  • 招聘网站开发文档中国最新消息开火
  • 学校网站建设讯息网站宣传与推广
  • 网站的竞品分析怎么做广告设计公司名称推荐
  • 贺州住房和城乡建设部网站织梦网站维护
  • 常德市建设网站大型网站建设公司推荐
  • 固原市建设局网站seo服务平台选择
  • 兰州手机网站新楼盘开盘信息
  • 富连网网站开发网站访问量怎么赚钱
  • 百度自助网站建设小程序制作一个需要多少钱?
  • 企业网站加视频韩国网站购物
  • 网站域名到期怎么续费wordpress seo免费主题
  • 网站内部优化方法企业画册怎么设计
  • 常州网站的优化WordPress侧滑手机菜单
  • 青岛网站制作排名asp做购物网站
  • 个人或主题网站建设实验报告织梦免费模板dede源码
  • 房产信息查询系统官方网站祥云平台技术支持双语网站
  • 昆山网站公司哪家好域名买来可以做网站吗
  • 长沙建站长沙网站google seo实战教程
  • 做网站80端口百度静态网站
  • 网站建设发展前景旅游网站设计思路及设计过程
  • 网站模板图做网站应该用多少分辨率
  • 建站平台功能结构图去掉wordpress标题中竖线
  • 广州制作网站服务wordpress付费建站
  • 昆明建设厅官方网站wordpress自定义导航
  • 如何看自己网站流量青州网页定制