三个api

    • Redux.createStore //传入reducer创建store
    • store.subscribe //订阅store
    • store.dispatch //派发action
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <title>Redux basic example</title>
    5. <script src="https://unpkg.com/redux@latest/dist/redux.min.js"></script>
    6. </head>
    7. <body>
    8. <div>
    9. <p>
    10. Clicked: <span id="value">0</span> times
    11. <button id="increment">+</button>
    12. <button id="decrement">-</button>
    13. <button id="incrementIfOdd">Increment if odd</button>
    14. <button id="incrementAsync">Increment async</button>
    15. </p>
    16. </div>
    17. <script>
    18. function counter(state, action) { // reducers :一个接收 state 和 action,并返回新的 state 的函数
    19. if (typeof state === 'undefined') {
    20. return 0
    21. }
    22. switch (action.type) {
    23. case 'INCREMENT':
    24. return state + 1
    25. case 'DECREMENT':
    26. return state - 1
    27. default:
    28. return state
    29. }
    30. }
    31. var store = Redux.createStore(counter)
    32. store.subscribe(render) // 订阅
    33. document.getElementById('increment')
    34. .addEventListener('click', function () {
    35. store.dispatch({ type: 'INCREMENT' }) // store通过dispatch派发action { type: 'INCREMENT' }就是action
    36. })
    37. document.getElementById('decrement')
    38. .addEventListener('click', function () {
    39. store.dispatch({ type: 'DECREMENT' })
    40. })
    41. document.getElementById('incrementIfOdd')
    42. .addEventListener('click', function () {
    43. if (store.getState() % 2 !== 0) {
    44. store.dispatch({ type: 'INCREMENT' })
    45. }
    46. })
    47. document.getElementById('incrementAsync')
    48. .addEventListener('click', function () {
    49. setTimeout(function () {
    50. store.dispatch({ type: 'INCREMENT' })
    51. }, 1000)
    52. })
    53. var valueEl = document.getElementById('value')
    54. function render() {
    55. valueEl.innerHTML = store.getState().toString()
    56. }
    57. render()
    58. </script>
    59. </body>
    60. </html>

    createStore接收reducer创建store,
    subscribe订阅store