前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vuex使用

Vuex使用

作者头像
程序员不务正业
发布2018-09-13 16:33:51
1K0
发布2018-09-13 16:33:51
举报
文章被收录于专栏:移动端周边技术扩展
代码语言:javascript
复制
// 遵从store基本写法

// 数据
const state = {};
// 协调回调action
const mutations = {};
// 外部直接调用的方法
const actions = {};
export default {
  state,
  mutations,
  actions
};

其中mutations和actions相互对应,使用:

代码语言:javascript
复制
const state = {
  skip: 0,
  events: []
};
// mutations与actions方法互相对应
// 协调回调action
const mutations = {
  loadMore(state, payload) {
    state.skip += 10;
    state.events = state.events.concat(payload.res);
  }
};
// 外部直接调用的方法
const actions = {
  loadMore({ commit, state }) {
    request({
      url: "event/list?loc=108288&start=1" + state.skip + "&count=10",
      methods: "get",
      params: ""
    })
      .then(function(response) {
        console.log(response);
        commit({
          type: "loadMore",
          res: res.body.events
        });
      })
      .catch(function(error) {})
  }
};

vue文件中处理方法mapActions与mapState中接收后映射

vue中使用对应的数据

代码语言:javascript
复制
<script>
import { mapState, mapActions } from "vuex";
import newsList from "../components/newList";
export default {
  name: "News",
  computed: {
    ...mapState({
      hotMovies: state => state.news.hotMovies,
      topMovies: state => state.news.topMovies,
      newMovies: state => state.news.newMovies,
      movieTags: state => state.news.movieTags
    })
  },
  components: {
    newsList: newsList
  },

  methods: {
    getMovie() {
      this.$store.dispatch("getMovie");
    },
    ...mapActions["getMovie"]
  },
  created() {
    // this.getMovie();
  }
};
</script>

store中参数传递

代码语言:javascript
复制
//参数发送
 methods: {
        getMoreMovie() {
            this.$store.dispatch({
                type: "getMoreMovie",
                moviesType: this.moviesType
            });
        },
        ...mapActions["getMoreMovie"]
    }

//js中参数接收
getMoreMovie({ commit, state }, { moviesType }) {
switch (moviesType) {
      case "1": {
        moreUrl = "/movie/in_theaters?count=8";
        break;
      }
      case "2": {
        moreUrl = "/movie/coming_soon?count=8";
        break;
      }
      case "3": {
        moreUrl = "/movie/top250?count=8";
        break;
      }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • store中参数传递
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档