getting-started.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  1. <!DOCTYPE HTML>
  2. <html lang="en" >
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  6. <title>Getting Started · Vuex</title>
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  8. <meta name="description" content="">
  9. <meta name="generator" content="GitBook 3.2.2">
  10. <link rel="stylesheet" href="../gitbook/style.css">
  11. <link rel="stylesheet" href="../gitbook/gitbook-plugin-prism/prism.css">
  12. <link rel="stylesheet" href="../gitbook/gitbook-plugin-search/search.css">
  13. <link rel="stylesheet" href="../gitbook/gitbook-plugin-theme-vuejs/vue.css">
  14. <meta name="HandheldFriendly" content="true"/>
  15. <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  16. <meta name="apple-mobile-web-app-capable" content="yes">
  17. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  18. <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
  19. <link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
  20. <link rel="next" href="core-concepts.html" />
  21. <link rel="prev" href="intro.html" />
  22. </head>
  23. <body>
  24. <div class="book">
  25. <div class="book-summary">
  26. <div id="book-search-input" role="search">
  27. <input type="text" placeholder="Type to search" />
  28. </div>
  29. <nav role="navigation">
  30. <script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=vuejs" id="_carbonads_js"></script>
  31. <ul class="summary">
  32. <li class="chapter " data-level="1.1" data-path="./">
  33. <a href="./">
  34. Introduction
  35. </a>
  36. </li>
  37. <li class="chapter " data-level="1.2" >
  38. <a target="_blank" href="https://github.com/vuejs/vuex/releases">
  39. Release Notes
  40. </a>
  41. </li>
  42. <li class="chapter " data-level="1.3" data-path="installation.html">
  43. <a href="installation.html">
  44. Installation
  45. </a>
  46. </li>
  47. <li class="chapter " data-level="1.4" data-path="intro.html">
  48. <a href="intro.html">
  49. What is Vuex?
  50. </a>
  51. </li>
  52. <li class="chapter active" data-level="1.5" data-path="getting-started.html">
  53. <a href="getting-started.html">
  54. Getting Started
  55. </a>
  56. </li>
  57. <li class="chapter " data-level="1.6" data-path="core-concepts.html">
  58. <a href="core-concepts.html">
  59. Core Concepts
  60. </a>
  61. <ul class="articles">
  62. <li class="chapter " data-level="1.6.1" data-path="state.html">
  63. <a href="state.html">
  64. State
  65. </a>
  66. </li>
  67. <li class="chapter " data-level="1.6.2" data-path="getters.html">
  68. <a href="getters.html">
  69. Getters
  70. </a>
  71. </li>
  72. <li class="chapter " data-level="1.6.3" data-path="mutations.html">
  73. <a href="mutations.html">
  74. Mutations
  75. </a>
  76. </li>
  77. <li class="chapter " data-level="1.6.4" data-path="actions.html">
  78. <a href="actions.html">
  79. Actions
  80. </a>
  81. </li>
  82. <li class="chapter " data-level="1.6.5" data-path="modules.html">
  83. <a href="modules.html">
  84. Modules
  85. </a>
  86. </li>
  87. </ul>
  88. </li>
  89. <li class="chapter " data-level="1.7" data-path="structure.html">
  90. <a href="structure.html">
  91. Application Structure
  92. </a>
  93. </li>
  94. <li class="chapter " data-level="1.8" data-path="plugins.html">
  95. <a href="plugins.html">
  96. Plugins
  97. </a>
  98. </li>
  99. <li class="chapter " data-level="1.9" data-path="strict.html">
  100. <a href="strict.html">
  101. Strict Mode
  102. </a>
  103. </li>
  104. <li class="chapter " data-level="1.10" data-path="forms.html">
  105. <a href="forms.html">
  106. Form Handling
  107. </a>
  108. </li>
  109. <li class="chapter " data-level="1.11" data-path="testing.html">
  110. <a href="testing.html">
  111. Testing
  112. </a>
  113. </li>
  114. <li class="chapter " data-level="1.12" data-path="hot-reload.html">
  115. <a href="hot-reload.html">
  116. Hot Reloading
  117. </a>
  118. </li>
  119. <li class="chapter " data-level="1.13" data-path="api.html">
  120. <a href="api.html">
  121. API Reference
  122. </a>
  123. </li>
  124. <li class="divider"></li>
  125. <li>
  126. <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
  127. Published with GitBook
  128. </a>
  129. </li>
  130. </ul>
  131. </nav>
  132. </div>
  133. <div class="book-body">
  134. <div class="body-inner">
  135. <div class="book-header" role="navigation">
  136. <!-- Title -->
  137. <h1>
  138. <i class="fa fa-circle-o-notch fa-spin"></i>
  139. <a href="." >Getting Started</a>
  140. </h1>
  141. </div>
  142. <div class="page-wrapper" tabindex="-1" role="main">
  143. <div class="page-inner">
  144. <div id="book-search-results">
  145. <div class="search-noresults">
  146. <section class="normal markdown-section">
  147. <h1 id="getting-started">Getting Started</h1>
  148. <p>At the center of every Vuex application is the <strong>store</strong>. A &quot;store&quot; is basically a container that holds your application <strong>state</strong>. There are two things that make a Vuex store different from a plain global object:</p>
  149. <ol>
  150. <li><p>Vuex stores are reactive. When Vue components retrieve state from it, they will reactively and efficiently update if the store&apos;s state changes.</p>
  151. </li>
  152. <li><p>You cannot directly mutate the store&apos;s state. The only way to change a store&apos;s state is by explicitly <strong>committing mutations</strong>. This ensures every state change leaves a track-able record, and enables tooling that helps us better understand our applications.</p>
  153. </li>
  154. </ol>
  155. <h3 id="the-simplest-store">The Simplest Store</h3>
  156. <blockquote>
  157. <p><strong>NOTE:</strong> We will be using ES2015 syntax for code examples for the rest of the docs. If you haven&apos;t picked it up, <a href="https://babeljs.io/docs/learn-es2015/" target="_blank">you should</a>!</p>
  158. </blockquote>
  159. <p>After <a href="installation.html">installing</a> Vuex, let&apos;s create a store. It is pretty straightforward - just provide an initial state object, and some mutations:</p>
  160. <pre class="language-"><code class="lang-js"><span class="token comment" spellcheck="true">// Make sure to call Vue.use(Vuex) first if using a module system</span>
  161. <span class="token keyword">const</span> store <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Vuex<span class="token punctuation">.</span>Store</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
  162. state<span class="token punctuation">:</span> <span class="token punctuation">{</span>
  163. count<span class="token punctuation">:</span> <span class="token number">0</span>
  164. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  165. mutations<span class="token punctuation">:</span> <span class="token punctuation">{</span>
  166. increment <span class="token punctuation">(</span>state<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  167. state<span class="token punctuation">.</span>count<span class="token operator">++</span>
  168. <span class="token punctuation">}</span>
  169. <span class="token punctuation">}</span>
  170. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  171. </code></pre>
  172. <p>Now, you can access the state object as <code>store.state</code>, and trigger a state change with the <code>store.commit</code> method:</p>
  173. <pre class="language-"><code class="lang-js">store<span class="token punctuation">.</span><span class="token function">commit</span><span class="token punctuation">(</span><span class="token string">&apos;increment&apos;</span><span class="token punctuation">)</span>
  174. console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>store<span class="token punctuation">.</span>state<span class="token punctuation">.</span>count<span class="token punctuation">)</span> <span class="token comment" spellcheck="true">// -&gt; 1</span>
  175. </code></pre>
  176. <p>Again, the reason we are committing a mutation instead of changing <code>store.state.count</code> directly, is because we want to explicitly track it. This simple convention makes your intention more explicit, so that you can reason about state changes in your app better when reading the code. In addition, this gives us the opportunity to implement tools that can log every mutation, take state snapshots, or even perform time travel debugging.</p>
  177. <p>Using store state in a component simply involves returning the state within a computed property, because the store state is reactive. Triggering changes simply means committing mutations in component methods.</p>
  178. <p>Here&apos;s an example of the <a href="https://jsfiddle.net/n9jmu5v7/1269/" target="_blank">most basic Vuex counter app</a>.</p>
  179. <p>Next, we will discuss each core concept in much finer details, starting with <a href="state.html">State</a>.</p>
  180. </section>
  181. </div>
  182. <div class="search-results">
  183. <div class="has-results">
  184. <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
  185. <ul class="search-results-list"></ul>
  186. </div>
  187. <div class="no-results">
  188. <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
  189. </div>
  190. </div>
  191. </div>
  192. </div>
  193. </div>
  194. <script src="//m.servedby-buysellads.com/monetization.js" type="text/javascript"></script>
  195. <div class="bsa-cpc"></div>
  196. <script>
  197. (function(){
  198. if(typeof _bsa !== 'undefined' && _bsa) {
  199. _bsa.init('default', 'CKYD62QM', 'placement:vuejsorg', {
  200. target: '.bsa-cpc',
  201. align: 'horizontal',
  202. disable_css: 'true'
  203. });
  204. }
  205. })();
  206. </script>
  207. </div>
  208. <a href="intro.html" class="navigation navigation-prev " aria-label="Previous page: What is Vuex?">
  209. <i class="fa fa-angle-left"></i>
  210. </a>
  211. <a href="core-concepts.html" class="navigation navigation-next " aria-label="Next page: Core Concepts">
  212. <i class="fa fa-angle-right"></i>
  213. </a>
  214. </div>
  215. <script>
  216. var gitbook = gitbook || [];
  217. gitbook.push(function() {
  218. gitbook.page.hasChanged({"page":{"title":"Getting Started","level":"1.5","depth":1,"next":{"title":"Core Concepts","level":"1.6","depth":1,"path":"core-concepts.md","ref":"core-concepts.md","articles":[{"title":"State","level":"1.6.1","depth":2,"path":"state.md","ref":"state.md","articles":[]},{"title":"Getters","level":"1.6.2","depth":2,"path":"getters.md","ref":"getters.md","articles":[]},{"title":"Mutations","level":"1.6.3","depth":2,"path":"mutations.md","ref":"mutations.md","articles":[]},{"title":"Actions","level":"1.6.4","depth":2,"path":"actions.md","ref":"actions.md","articles":[]},{"title":"Modules","level":"1.6.5","depth":2,"path":"modules.md","ref":"modules.md","articles":[]}]},"previous":{"title":"What is Vuex?","level":"1.4","depth":1,"path":"intro.md","ref":"intro.md","articles":[]},"dir":"ltr"},"config":{"plugins":["edit-link","prism","-highlight","github","-highlight","github"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"edit-link":{"label":"Edit This Page","base":"https://github.com/vuejs/vuex/tree/dev/docs"},"github":{"url":"https://github.com/vuejs/vuex/"},"prism":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":false,"twitter":false,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-vuejs":{},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Vuex","language":"en","links":{"sharing":{"facebook":false,"twitter":false}},"gitbook":"2.x.x"},"file":{"path":"getting-started.md","mtime":"2018-04-20T00:44:03.849Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2018-04-20T00:47:55.633Z"},"basePath":".","book":{"language":"en"}});
  219. });
  220. </script>
  221. </div>
  222. <script src="../gitbook/gitbook.js"></script>
  223. <script src="../gitbook/theme.js"></script>
  224. <script src="../gitbook/gitbook-plugin-edit-link/plugin.js"></script>
  225. <script src="../gitbook/gitbook-plugin-github/plugin.js"></script>
  226. <script src="../gitbook/gitbook-plugin-search/search-engine.js"></script>
  227. <script src="../gitbook/gitbook-plugin-search/search.js"></script>
  228. <script src="../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
  229. <script src="../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
  230. <script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script>
  231. </body>
  232. </html>