redux学习笔记

React-redux学习阶段

在这里插入图片描述

1.在src目录中新建store仓库,以及reducer(仓库管理员),存储默认state数据

  • state中的数据为初始的默认数据,后面组件使用时候会使用mapStateToProp方法将其中的数据映射到组件中
  • action为用于修改state中的数据,用mapDispatchToProps方法结合dispatch将action传入到管理员reducer中
>let defaultData={
    num:1
}
//管理员
const reducer=(state=defaultData,action)=>{
return state
}
export default reducer;

2.在store/index.js中使用reducer管理员

> import {createStore} from 'redux'
import reducer from './reducer'
const store =createStore(reducer)
//管理员被引入到仓库中,每次仓库都会触发管理远
export default store

3.在src/index.js中,引入仓库,并使用Provider包裹

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import {Provider} from 'react-redux'
import store from './store'
ReactDOM.render(
  // <React.StrictMode>
  <Provider store={store}>
    <App />
    </Provider>
  // </React.StrictMode>,
  ,
  document.getElementById('root')
);

到这里,初步的仓库已经建立完毕,接下来将是数据的使用以及修改,完美的分割线
--------------------分割分割分割---------------------------------------------------------------------

引用数据

1.component/header.js

import React from 'react';
import {connect} from 'react-redux'
class Header extends React.Component {
    constructor(props) {
        super(props);
        this.state = {  }
    }
    render() { 
        return (<div>Header组件{this.props.num}</div>  );
    }
}
//用于映射仓库中的数据
let mapStateToProp=(state)=>{
    return ({
        num:state.num
    })
}
//将组件和映射的数据进行绑定
let superHeader=connect(mapStateToProp)(Header)
console.log(mapStateToProp);
 
export default superHeader;

2.数据的修改需要使用到mapDispatchToProps方法
/btn.js

const mapDispatchToProp = (dispatch) => ({
    addFnc() {
        const action = {
            type: 'add',
            value: 1
        }
        dispatch(action)
    }
})
const superBtn = connect(mapStateToProps, mapDispatchToProp)(Btn)

在触发addFnc方法之后,原reducer/index.js中的reducer方法会重新被触发
浏览器中打印的action
接着,在action中可以使用action.type的类型进行业务逻辑的操作用于修改state中的数据.
在进行数据修改之前,进行一遍数据的深拷贝----------

let defaultData={
    num:1
}
const reducer=(state=defaultData,action)=>{
    console.log(action);
    //数据操作部分
    if(action.type==='add'){
        let newState=JSON.parse(JSON.stringify(state))
        newState.num+=action.value
        return newState
    }
return state
}
export default reducer;

不愿秃头学习记skr!~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个不想秃头的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值