Maison > interface Web > js tutoriel > le corps du texte

Comment Vue utilise Redux

不言
Libérer: 2018-07-04 10:58:14
original
2786 Les gens l'ont consulté

Cet article présente principalement comment utiliser Redux avec Vue. Le contenu est assez bon, je vais le partager avec vous maintenant et le donner comme référence.

En regardant le code source de Vuex le week-end dernier, j'ai soudainement eu une inspiration, pourquoi est-ce que tout est Vuex ?

J'ai donc écrit un plug-in tout l'après-midi pour aider Vue à utiliser Redux

Url Gayhub

Vue -with-Redux

Il s'agit d'un plugin pour aider Vue à utiliser Redux pour gérer l'état. Redux est un outil de gestion d'état très populaire. vue-with-redux vous offre un moyen d'utiliser Redux dans l'environnement Vue. Cette fois apporte une expérience de développement différente.

Démarrer

Vous devez d'abord installer vue-with-redux via la commande suivante

npm install -save vue-with-redux
Copier après la connexion

Exécuter la démo

 git clone https://github.com/ryouaki/vue-with-redux.git
 npm install
 npm run serve
Copier après la connexion

Utilisation

Vous devez modifier votre fichier d'entrée comme suit :

 // 有可能是你的entry.js文件
 ... // 这里是你引入的其它包
 import VuexRedux from 'vue-with-redux';
 import { makeReduxStore } from 'vue-with-redux';
 import reduces from 'YOUR-REDUCERS';
 import middlewares from 'REDUX-MIDDLEWARES';

 Vue.use(VuexRedux);

 let store = makeReduxStore(reduces, [middlewares]);

 new Vue({
 store,
 render: h => h(App)
 }).$mount('#app')
Copier après la connexion

Ce qui suit est une fonction actionCreate :

 export function test() {
 return {
  type: 'TEST'
 }
 }

 export function asyncTest() {
 return (dispatch, getState) => {
  setTimeout( () => {
  console.log('New:', getState());
  dispatch({type: 'TEST'});
  console.log('Old', getState());
  }, 100);
 }
 }
Copier après la connexion

Remarque : Vous n'avez pas besoin d'utiliser redux-thunk, car Vue -with-Redux Fournit déjà la prise en charge du traitement asynchrone.

Voici un exemple de réducteur :

 function reduce (state = { count: 0 }, action) {
 switch(action.type) {
  case 'TEST':
  state.count++;
  return state;
  default:
  return state;
 }
 }

 export default {
 reduce
 };
Copier après la connexion

Exemple de composant Vue :

 <template>
 <p>
  <button @click="clickHandler1">Action Object</button>
  <button @click="clickHandler2">Sync Action</button>
  <button @click="clickHandler3">Async Action</button>
  <p>{{reduce.count}}</p>
 </p>
 </template>

 <script>
 import { test, asyncTest } from &#39;./../actions&#39;;

 export default {
 name: &#39;HelloWorld&#39;,
 props: {
  msg: String
 },
 // 你必须在这里预先定义你订阅的Redux中的状态。否则编译模版会报错。
 data() {
  return {
  reduce: {}
  }
 },
 methods: {
  clickHandler1() {
  this.dispatch({type: &#39;TEST&#39;});
  },
  clickHandler2() {
  this.dispatch(test());
  },
  clickHandler3() {
  this.dispatch(asyncTest());
  },
  // 你必须实现一个mapReduxState函数,用于告诉Vue-with-Redux你需要订阅哪些redux中的状态
  // [ state ] 参数就是redux状态树的根。
  mapReduxState(state) { 
  return {
   reduce: state.reduce
  }
  },
 }
 }
 </script>
Copier après la connexion

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Présentation des paramètres d'interception d'itinéraire de vue et de saut de page

Les flèches ne peuvent pas être utilisées dans les données de vue Problème analyse des fonctions

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
vue
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal