博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
发布个人文章
阅读量:6219 次
发布时间:2019-06-21

本文共 3417 字,大约阅读时间需要 11 分钟。

添加发布逻辑

1、打开 src/views/articles/Create.vue 文件,复制以下代码替换原 <script>

src/views/articles/Create.vue

1 79 更改说明:

2、查找 <input v-validator.required,使用 v-model 绑定 title,并添加 input 事件处理器 saveTitle

1 

3、查找 <button class="btn btn-primary",添加 click 事件处理器 post

1 

 使用vuex管理文章状态:

管理文章状态

因为会有很地方用到文章的数据,所以我们把相关的逻辑都放到 store 里,以便使用和统一管理。

 

1). 添加状态和事件类型

打开 src/store/index.js 文件,添加 articles 和 UPDATE_ARTICLES(注释部分是涉及的修改):

src/store/index.js

1 . 2 . 3 . 4 const state = { 5   user: ls.getItem('user'), 6   auth: ls.getItem('auth'), 7   // 所有文章状态 8   articles: ls.getItem('articles') 9 }10 11 const mutations = {12   UPDATE_USER(state, user) {13     state.user = user14     ls.setItem('user', user)15   },16   UPDATE_AUTH(state, auth) {17     state.auth = auth18     ls.setItem('auth', auth)19   },20   // 更改所有文章的事件类型21   UPDATE_ARTICLES(state, articles) {22     state.articles = articles23     ls.setItem('articles', articles)24   }25 }26 .27 .28 .29 2). 添加发布事件

2). 添加发布事件

在 src/store 下新建 actions.js 文件,复制贴入以下代码:

src/store/actions.js

1 // 引入路由作页面跳转用 2 import router from '../router' 3  4 // 导出一个 post 事件,这里的用户参数是 { article, articleId },article 包含文章标题和内容,articleId 是文章 ID  5 export const post = ({ commit, state }, { article, articleId }) => { 6   // 从仓库获取所有文章 7   let articles = state.articles 8  9   // 没有文章时,建一个空数组10   if (!Array.isArray(articles)) articles = []11 12   // 存在 article 时13   if (article) {14     // 因为是单用户,所以指定用户 ID 为 115     const uid = 116     // 获取用户传过来的 title 和 content17     const { title, content } = article18     // 获取当前日期19     const date = new Date()20 21     // 如果没传 articleId,表示新建文章22     if (articleId === undefined) {23       // 获取最后一篇文章24       const lastArticle = articles[articles.length - 1]25 26       if (lastArticle) {27         // 将当前 articleId 在最后一篇文章的 articleId 基础上加 128         articleId = parseInt(lastArticle.articleId) + 129       } else {30         // 将当前 articleId 在文章长度基础上加 131         articleId = articles.length + 132       }33 34       // 将当前文章添加到所有文章35       articles.push({36         uid,37         articleId,38         title,39         content,40         date41       })42     }43 44     // 更新所有文章45     commit('UPDATE_ARTICLES', articles)46     // 跳转到首页,并附带 articleId 和 showMsg 参数,showMsg 用来指示目标页面显示一个提示,我们稍后添加相关逻辑47     router.push({ name: 'Home', params: { articleId, showMsg: true } })48   }49 }

3). 引入 actions.js

打开 src/store/index.js 文件,引入并混入 actions.js(注释部分是涉及的修改):

src/store/index.js

1 import Vue from 'vue' 2 import Vuex from 'vuex' 3 import ls from '../utils/localStorage' 4 import router from '../router' 5 // 引入 actions.js 的所有导出 6 import * as moreActions from './actions' 7 . 8 . 9 .10 const actions = {11   login({ commit }, user) {12     if (user) commit('UPDATE_USER', user)13     commit('UPDATE_AUTH', true)14     router.push('/')15   },16   logout({ commit }) {17     commit('UPDATE_AUTH', false)18     router.push({ name: 'Home', params: { logout: true } })19   },20   updateUser({ state, commit }, user) {21     const stateUser = state.user22 23     if (stateUser && typeof stateUser === 'object') {24       user = { ...stateUser, ...user }25     }26 27     commit('UPDATE_USER', user)28   },29   // 使用对象展开运算符混入 moreActions30   ...moreActions31 }32 .

修改发布逻辑

打开 src/views/articles/Create.vue 文件,查找 console.log(article),改为分发 post 事件:

src/views/articles/Create.vue

// 修改console.log(article)// 为 => 分发 post 事件,并附带参数 { article }this.$store.dispatch('post', { article })

 

转载地址:http://uvoja.baihongyu.com/

你可能感兴趣的文章
【乱码】乱码整理
查看>>
python基础之模块一
查看>>
RabbitMQ的几种应用场景
查看>>
跨域之URL
查看>>
第三周周报
查看>>
王思祺2015080360030的第一次作业最终版
查看>>
windows下mysql 5.7版本中修改编码为utf-8的方法
查看>>
UEFI系统安装U盘的制作方式
查看>>
自增和自减操作符
查看>>
3_主流部署方式介绍-Django+mod_wsgi+Apache
查看>>
SQL脚本去重分组统计
查看>>
小米手机安装fidder证书
查看>>
读《Oracle DBA工作笔记》知识点-获取创建语句
查看>>
IOS操作系统上执行monkey测试
查看>>
读书笔记—CLR via C#线程25-26章节
查看>>
Hybrid设计--离线更新
查看>>
jquery复习笔记
查看>>
IRP三种操作
查看>>
sql--转置
查看>>
XML文件
查看>>