UNPKG

5.61 kBHTMLView Raw
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8">
5 <link rel="stylesheet" href="assets/style.css?t=a44c9e9d">
6 <link rel="stylesheet" href="http://ricostacruz.com/docpress-rsc/style.css">
7 <script src="assets/script.js?t=2bcc4b59"></script>
8 <title>Redux example</title>
9 <meta name="viewport" content="width=device-width">
10 <script>
11 if (false || window.location.hostname.indexOf("ricostacruz.com") === window.location.hostname.length - 15) {
12 (function(d,o,c,p,r,e,s){d['GoogleAnalyticsObject']=r;d[r]=d[r]||function(){(d[r].q=d[r].q||[]).push(arguments)},d[r].l=1*new Date();e=o.createElement(c),s=o.getElementsByTagName(c)[0];e.async=1;e.src=p;s.parentNode.insertBefore(e,s)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
13 ga('create',"UA-20473929-1",'auto')
14 }
15 </script>
16 </head>
17 <body class="-menu-visible">
18 <div class="doc-layout">
19 <div class="toggle menu-toggle js-menu-toggle"></div>
20 <div class="body page-redux_example">
21 <div class="header-nav">
22 <div class="right"><a href="https://github.com/rstacruz/scour" data-title="rstacruz/scour" class="iconlink">
23 <!-- span.title Open in GitHub--><span class="icon -github"></span></a>
24 </div>
25 </div>
26 <div class="markdown-body"><h1 id="redux-example">Redux example</h1>
27<p>(I&#x2019;ll explain more later.)</p>
28<p>If all your reducers are going to be using scour, you can set your <code>state</code> as a scour-wrapped object.</p>
29<h2 id="defining-your-store">Defining your store</h2>
30<p>We&#x2019;re going to use a scour-wrapped object as the <code>initialState</code> for <code>createStore()</code>.</p>
31<pre><code class="lang-js"><span class="pl-k">import</span> { createStore } <span class="pl-k">from</span> <span class="pl-s">&apos;redux&apos;</span>
32
33function reducer (state, action) {
34 /* `state` is a scour-wrapped object. */
35 switch (action.type) {
36 case <span class="pl-s">&apos;LOAD_TRACKS&apos;</span>:
37 return state.set(<span class="pl-s">&apos;tracks&apos;</span>, action.data)
38
39 case <span class="pl-s">&apos;PLAY&apos;</span>:
40 return state.set(<span class="pl-s">&apos;audio.state&apos;</span>, <span class="pl-s">&apos;playing&apos;</span>)
41
42 case <span class="pl-s">&apos;STOP&apos;</span>:
43 return state.set(<span class="pl-s">&apos;audio.state&apos;</span>, <span class="pl-s">&apos;stopped&apos;</span>)
44
45 case <span class="pl-s">&apos;SELECT_TRACK&apos;</span>:
46 var track = state.go(<span class="pl-s">&apos;tracks&apos;</span>, action.trackId)
47 return state.set(<span class="pl-s">&apos;audio.current_track&apos;</span>, track)
48 }
49 return state
50}
51
52store = createStore(reducer, scour({}))
53</code></pre>
54<h2 id="dispatching-events">Dispatching events</h2>
55<p>Here&#x2019;s an example.</p>
56<pre><code class="lang-js">store.dispatch({
57 type: <span class="pl-s">&apos;LOAD_TRACKS&apos;</span>,
58 data: {
59 <span class="hljs-number">1</span>: { title: <span class="pl-s">&apos;Levels&apos;</span>, artist: <span class="pl-s">&apos;Avicii&apos;</span> },
60 <span class="hljs-number">2</span>: { title: <span class="pl-s">&apos;Bonfire&apos;</span>, artist: <span class="pl-s">&apos;Knife Party&apos;</span> },
61 <span class="hljs-number">3</span>: { title: <span class="pl-s">&apos;Hello&apos;</span>, artist: <span class="pl-s">&apos;Adele&apos;</span> }
62 }
63})
64
65store.dispatch({ type: <span class="pl-s">&apos;SELECT_TRACK&apos;</span>, <span class="hljs-number">3</span> })
66store.dispatch({ type: <span class="pl-s">&apos;PLAY&apos;</span> })
67</code></pre>
68<h2 id="using-with-react">Using with React</h2>
69<p>Hmm&#x2026; I&#x2019;ll explain later.</p>
70
71 </div>
72 <div class="footer-nav">
73 <div class="left"><a href="extensions_example.html"><span class="title">Extensions example</span></a></div>
74 </div>
75 </div>
76 <div class="menu toc-menu">
77 <li class="menu-item -level-0 -parent">
78 <ul class="submenu">
79 <li class="menu-item -level-1"><a href="index.html" class="link title link-index">scour.js</a>
80 </li>
81 <li class="menu-item -level-1 -parent"><span class="title">Appendix</span>
82 <ul class="submenu">
83 <li class="menu-item -level-2"><a href="HISTORY.html" class="link title link-history">Changelog</a>
84 </li>
85 <li class="menu-item -level-2"><a href="comparison.html" class="link title link-comparison">Comparison with others</a>
86 </li>
87 <li class="menu-item -level-2"><a href="extensions_example.html" class="link title link-extensions_example">Extensions example</a>
88 </li>
89 <li class="menu-item -level-2"><a href="redux_example.html" class="link title -active link-redux_example">Redux example</a>
90 <ul class="headings heading-list">
91 <li class="heading-item -depth-2"><a href="#defining-your-store" class="hlink link-defining-your-store">Defining your store</a>
92 </li>
93 <li class="heading-item -depth-2"><a href="#dispatching-events" class="hlink link-dispatching-events">Dispatching events</a>
94 </li>
95 <li class="heading-item -depth-2"><a href="#using-with-react" class="hlink link-using-with-react">Using with React</a>
96 </li>
97 </ul>
98 </li>
99 </ul>
100 </li>
101 </ul>
102 </li>
103 </div>
104 </div>
105 </body>
106</html>
\No newline at end of file