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 class="icon -github"></span></a>
|
24 | </div>
|
25 | </div>
|
26 | <div class="markdown-body"><h1 id="redux-example">Redux example</h1>
|
27 | <p>(I’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’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">'redux'</span>
|
32 |
|
33 | function reducer (state, action) {
|
34 | /* `state` is a scour-wrapped object. */
|
35 | switch (action.type) {
|
36 | case <span class="pl-s">'LOAD_TRACKS'</span>:
|
37 | return state.set(<span class="pl-s">'tracks'</span>, action.data)
|
38 |
|
39 | case <span class="pl-s">'PLAY'</span>:
|
40 | return state.set(<span class="pl-s">'audio.state'</span>, <span class="pl-s">'playing'</span>)
|
41 |
|
42 | case <span class="pl-s">'STOP'</span>:
|
43 | return state.set(<span class="pl-s">'audio.state'</span>, <span class="pl-s">'stopped'</span>)
|
44 |
|
45 | case <span class="pl-s">'SELECT_TRACK'</span>:
|
46 | var track = state.go(<span class="pl-s">'tracks'</span>, action.trackId)
|
47 | return state.set(<span class="pl-s">'audio.current_track'</span>, track)
|
48 | }
|
49 | return state
|
50 | }
|
51 |
|
52 | store = createStore(reducer, scour({}))
|
53 | </code></pre>
|
54 | <h2 id="dispatching-events">Dispatching events</h2>
|
55 | <p>Here’s an example.</p>
|
56 | <pre><code class="lang-js">store.dispatch({
|
57 | type: <span class="pl-s">'LOAD_TRACKS'</span>,
|
58 | data: {
|
59 | <span class="hljs-number">1</span>: { title: <span class="pl-s">'Levels'</span>, artist: <span class="pl-s">'Avicii'</span> },
|
60 | <span class="hljs-number">2</span>: { title: <span class="pl-s">'Bonfire'</span>, artist: <span class="pl-s">'Knife Party'</span> },
|
61 | <span class="hljs-number">3</span>: { title: <span class="pl-s">'Hello'</span>, artist: <span class="pl-s">'Adele'</span> }
|
62 | }
|
63 | })
|
64 |
|
65 | store.dispatch({ type: <span class="pl-s">'SELECT_TRACK'</span>, <span class="hljs-number">3</span> })
|
66 | store.dispatch({ type: <span class="pl-s">'PLAY'</span> })
|
67 | </code></pre>
|
68 | <h2 id="using-with-react">Using with React</h2>
|
69 | <p>Hmm… I’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 |