react redux

爱被打了一巴掌 2021-07-25 02:30 505阅读 0赞
  1. redux
  2. store:数据仓库,保存数据的地方
  3. state:一个对象,数据库里的所有数据都放到一个state
  4. action:一个动作,触发数据改变的方法,包含dispacth传入数据,action.键名获取
  5. dispatch:将动作触发方法
  6. reducer:一个函数,获取动作,改变数据,生成一个新的状态,从而改变页面
  7. 安装
  8. cnpm install redux --save
  9. 引入
  10. import Redux,{createStore} from 'redux'
  11. 1、创建仓库
  12. //state为初始数据,通过action内的参数来做逻辑判断,改变state
  13. const reducer=function(state={num:0},action)
  14. {
  15. //对动作选择
  16. switch(action.type)
  17. {
  18. case "add":
  19. state.num++;
  20. break;
  21. case "substract":
  22. state.num--;
  23. break;
  24. }
  25. //返回新的状态,将数据解构,改变hash值
  26. return {...state}
  27. }
  28. const store=createStore(reducer)
  29. 2、创建方法,使用dispatch修改/传入数据
  30. function xx()
  31. {
  32. //通过仓库的方法dispatch触发方法,传入{键值对到action里}
  33. store.dispatch({type:'substract',xx})
  34. }
  35. 3、将方法绑定事件,从而通过事件可以利用dispatch修改action的内容
  36. 4、组件中获取最终数据
  37. let xx=store.getSate()
  38. xx.state中的键名
  39. 5、监听事件改变state,并每次重新渲染页面
  40. store.subscribe(()=>{
  41. ReactDOM.render(<组件名 />, document.getElementById('root'));
  42. })

代码示例:

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import './index.css';
  4. import App from './App';
  5. import * as serviceWorker from './serviceWorker';
  6. import Redux,{ createStore} from 'redux'
  7. //仓库,函数获取动作,改变状态,返回新的状态
  8. const reducer=function(state={ num:0},action)
  9. {
  10. //对动作选择
  11. switch(action.type)
  12. {
  13. case "add":
  14. state.num++;
  15. break;
  16. case "substract":
  17. state.num--;
  18. break;
  19. }
  20. //返回新的状态,将数据解构,改变hash值
  21. return { ...state}
  22. }
  23. //创建仓库,仓库是一个函数
  24. const store=createStore(reducer)
  25. function add()
  26. {
  27. //通过仓库的方法dispatch触发方法
  28. store.dispatch({ type:'add',content:'hello'})
  29. }
  30. function substract()
  31. {
  32. //通过仓库的方法dispatch触发方法
  33. store.dispatch({ type:'substract'})
  34. }
  35. class Counter extends React.Component
  36. {
  37. //获取数据
  38. render(){
  39. let state=store.getState()
  40. return(
  41. <div>
  42. <h1>计数器:{ state.num}</h1>
  43. <button onClick={ add}>计数+1</button>
  44. <button onClick={ substract}>奇数-1</button>
  45. </div>
  46. )
  47. }
  48. }
  49. ReactDOM.render(<Counter />, document.getElementById('root'));
  50. // If you want your app to work offline and load faster, you can change
  51. // unregister() to register() below. Note this comes with some pitfalls.
  52. // Learn more about service workers: https://bit.ly/CRA-PWA
  53. serviceWorker.unregister();
  54. //监听数据变化并渲染
  55. store.subscribe(()=>{
  56. ReactDOM.render(<Counter />, document.getElementById('root'));
  57. })

发表评论

表情:
评论列表 (有 0 条评论,505人围观)

还没有评论,来说两句吧...

相关阅读

    相关
    redux+react-redux

    本文主要记录下自己在react道路上的爬坑过程 以及对于刚学习redux的同学提供一些可供参考的例子。 要知道redux和react并没有半毛钱的关系,redux甚至可以和j

    相关 react redux

    在react中使用redux入门。 基本的例子使用redux管理react的状态。 <!DOCTYPE html> <html> <head>