react-redux简单例子

redux的作用

react 本身是通过props传递属性的,层级嵌套太深的话,传递属性就需要一层层向下传递,回调也需要一层层的回调。
redux 的作用就是实现跨级传递属性方法和回调
react-redux 是连接react && redux的插件

简单例子

实现数字增加和减少

在这里插入图片描述

app.js
//app.js
import React from 'react'
import ReactDOM from 'react-dom'
import {Provider} from 'react-redux'
import Action from './Action'
import store from './Reducers'

ReactDOM.render(<Provider store={store}><Action/></Provider>, document.getElementById('root'));
Reducers.js
//Reducers.js
import {createStore} from "redux";

let reducers = function(state=1, action){
  switch (action.type) {
    case 'ADD':
      return state + 1;
      break;
    case 'DEC':
      return state - 1;
      break;
    default:
      return state;
  }
};

export default createStore(reducers);
Action.js
//Action.js
import {connect} from 'react-redux'
class Action extends React.Component {
  constructor(props){
    super(props);
  }
  render() {
    return (
      <div>
        <h1>current number: {this.props.state}</h1>
        <button onClick={this.props.dec}>dec</button>
        <button onClick={this.props.add}>add</button>
      </div>
    );
  }
}

function mapStateToProps(state) {
  return {
    state:state
  }
}
function mapDispatchToProps(dispatch) {
  return {
    add:function(e){
      const action = {
        type: 'ADD',
      };
      dispatch(action);
    },
    dec:function(){
      const action = {
        type: 'DEC'
      };
      dispatch(action);
    }
  }
}
export default connect(mapStateToProps, mapDispatchToProps)(Action);

修改对象不能直接修改state需要

Object.assign({}, state, {keyword:action.value,message:action.message});

import {createStore} from 'redux';
import $ from "jquery";

let reducers = function (state = {
    keyword: '',
    message: '',
    list: [],
    type: 1,
    totalPage: 0,
    pageSize: 20,
    currentPage: 1,
    songId: '',
    page: 1
}, action) {
    switch (action.type) {
        case 'message':
            state.message = action.value;
            break;
        case 'changeKeyword':
            return Object.assign({}, state, {keyword:action.value,message:action.message});
            break;
        case 'search':
            $.ajax({
                type: "GET",
                url: "/cx/index.php",
                async: false,
                data: {
                    m: 'SearchAction',
                    f: 'selectOfKeywords',
                    keyword: state.keyword,
                    page: state.page,
                    pageSize: state.pageSize

                },
                success: (response) => {
                    if (response.code === 0 && response.data.length > 0) {
                        state.list = response.date;
                        state.currentPage = state.page;
                        state.totalPage = Math.ceil(response.count / this.state.pageSize);

                    } else if (response.code !== 0) {

                        state.message = response.message;
                    }
                }
            });
            break;
    }
    return state;
};

export default createStore(reducers);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React-Redux是一个用于在React应用程序中集成Redux状态管理库的库。Reducer是Redux中的一个核心概念,用于描述状态的变化。它是一个纯函数,接收当前状态和一个动作作为参数,并返回一个新的状态。 在React-Redux中,我们通常会创建一个或多个Reducer来管理应用程序的各个部分的状态。Reducer可以单独或组合使用,以便处理不同部分的状态更新。 一个典型的Redux reducer函数看起来像这样: ```javascript const initialState = { // 初始状态 counter: 0, }; const reducer = (state = initialState, action) => { switch (action.type) { case 'INCREMENT': return { ...state, counter: state.counter + 1, }; case 'DECREMENT': return { ...state, counter: state.counter - 1, }; default: return state; } }; ``` 上面的例子中,我们定义了一个初始状态initialState对象和一个reducer函数。reducer函数接收两个参数,state和action。根据不同的action类型,在switch语句中对状态进行相应的更新,并返回新的状态。在这个例子中,我们定义了两种操作类型:INCREMENT和DECREMENT,分别用于增加和减少counter字段的值。 在React-Redux中,我们可以使用combineReducers函数将多个reducer组合为一个根reducer,并将其传递给Redux store。这样,在应用程序中的不同组件中就可以通过连接到store来访问和更新相应的状态了。 希望这个回答对你有所帮助!如果你需要更多关于React-Redux和reducer的信息,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值