Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@sysvale/vuex-make-request-store

Package Overview
Dependencies
Maintainers
6
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sysvale/vuex-make-request-store

Utilitário vuex de gerenciamento do estado de requests HTTP baseado em Promises

  • 1.0.4
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
6
Created
Source

vuex-make-request-store

Utilitário vuex de gerenciamento do estado de requests HTTP baseado em Promises

Contribuindo

Instalação

Clone o repositório, vá ao diretório do projeto e em seguida execute npm run install em seu terminal.

Executando testes

Após o passo de Instalação, em seu terminal, execute npm run test

Como utilizar

Realize a instalação em seu projeto com npm i @sysvale/vuex-make-request-store

Assumimos que você possui um conhecimento prévio em aplicações Vue e em Vuex.

Assumimos também que suas chamadas HTTP são realizadas através de alguma biblioteca que utiliza promises, como o Axios por exemplo.

Imagine que tenhamos um arquivo de um recurso Posts que expõe services que fazem chamadas à API de Posts:

services/Posts.js

import axios from 'axios';

export const getPosts = (params) => axios.get('/posts', { ...params });

O primeiro passo é criar um módulo que gerencie essa store desses recursos:

store/requests/posts

import makeRequestStore from 'vuex-make-request-store';

import {
	getPosts,
} from '<path>/services/Posts';

const modules = [
	{ getPosts },
];

export default {
	namespaced: true,

	modules: modules.reduce((acc, module) => ({
		...acc,
		...makeRequestStore(module),
	}), {}),
};

Desse modo, caso hajam outros endpoints da API de posts, basta apenas adicioná-los ao services/Posts.js, então importá-los no store/requests/posts.js e inserí-los no array de módulos.

Feito isso, vamos unificar as stores dos recursos:

store/requests

import posts from './posts';

export default {
	namespaced: true,

	modules: {
		posts,
	},
};

Assim, se houverem outras stores de outros recursos, por exemplo comments, é só importá-la e colocá-la nos módulos.

Por fim, na store de sua aplicação, importe a store de requests:

store.js

import Vue from 'vue';
import Vuex from 'vuex';

import requests from './requests';

Vue.use(Vuex);

export default new Vuex.Store({
	modules: {
		requests,
	},
});

Então quando precisar utilizar esse service em um componente, por exemplo, é só chamar a mutation criada automaticamente pelo makeRequestStore. Observe:

// <template></template>
// <script>
import { mapState, mapActions } from 'vuex';

export default {
	computed: {
		...mapState('requests/posts', {
			loadingGetPosts: ({ getPosts }) => getPosts.isFetching,
			failedGetPosts: ({ getPosts }) => getPosts.hasFailed,
			succeededGetPosts: ({ getPosts }) => getPosts.hasSucceeded,
		}),
	},

	methods: {
		...mapActions('requests/posts', [
			'getPosts',
		]),
	},
};
// </script>

Ao chamar this.getPosts() a promise do seu service é retornada e você pode encadear o .then() e o .catch() de acordo com sua lógica.

Observe que é possível mapear os estados da requisição para utilizá-los caso seja necessário.

Keywords

FAQs

Package last updated on 27 Jan 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc