react-redux 个人基本配置+使用心得

Redux  个人心得

第一步:

 

index.js 里面

import React from 'react'
import { render } from 'react-dom'
import { Provider } from 'react-redux'
import configureStore from './store/configureStore'

 这个文件里面其实是配置 数据store

导出的其实是一个函数

 

 

import Hello from './containers/Hello' 引入组件
const store = configureStore() 

因为导出的是函数所以加括号()
render(
    <Provider store={store}>
        <Hello/>  引用上面的组件
    </Provider>,
    document.getElementById('root')
)

 

 

 

 

 

第二步:  打开store配置文件

 

import configureStore from './store/configureStore'

找到并且打开这个文件 配置store的文件

 

    

import { createStore } from 'redux'
import { combineReducers } from 'redux'  数据集合

import userinfo from './userinfo'  用户信息的数据

const rootReducer = combineReducers({
    userinfo  这里是数据集

Use2,user3....
})

export default function configureStore(initialState) {
  const store = createStore(rootReducer, initialState)
                          上面的数据集规则

return store
}

 

 

  

 

import userinfo from './userinfo'  

接着 分析下,打开这个用户数据 规则

 

const initialState = {}  定义所有的初始化状态在这里
例如:用户信息数据,管理员数据...轮播数据

export default function userinfo(state = initialState, action) {
    switch (action.type) {
        // 登录
        case actionTypes.USERINFO_LOGIN:
            return action.data

        // 修改城市
        case actionTypes.UPDATE_CITYNAME:
            return action.data

        default:
            return state 默认初始化的值 其实就是json
    }
}

 

最后打开 hello组件

import React from 'react'
import { connect } from 'react-redux'
import { bindActionCreators } from 'redux'
用户数据集的actions 方法函数
import * as userinfoActions from '../actions/userinfo'  得到的是一个对象方法 userinfoActions.abc  这样的

import A from '../components/A'
import B from '../components/B'
import C from '../components/C'

class Hello extends React.Component {
    render() {
        return (
            <div>
                <p>hello world</p>
                <hr/>

4.从mapStateToProps 映射过来的了
                <A userinfo={this.props.userinfo}/>
                <hr/>
                <B userinfo={this.props.userinfo}/>
                <hr/>
                <C actions={this.props.userinfoActions}/>
            </div>
        )
    }

5.生命周期函数,加载完成的时候触发函数

传的一个json 过去 action方法集合的login
    componentDidMount() {
        // 模拟登陆
        this.props.userinfoActions.login({
            userid: 'abc',
            city: 'beijing'
        })
    }
}

function mapStateToProps(state) {
    return {
        userinfo: state.userinfo  

3.从store获取的userinfo,store配置文件的数据集来的
   然后hello组件就可以通过 this.props.userinfo获取

combineReducers 里面的userinfo就是上面的state.***

 }
}

7. userinfoActionsaction方法里面的
function mapDispatchToProps(dispatch) {
    return {
        userinfoActions: bindActionCreators(userinfoActions, dispatch)
    }
}

export default connect(
    mapStateToProps, 1. props属性值塞到 hello组件里
    mapDispatchToProps  
)(Hello)  2. 然后这个hello组件就可以获取 store数据

 

 

 

打开action方法,其实就是一堆函数方法

 

export function login(data) {
    return {
        type: actionTypes.USERINFO_LOGIN,
        data  这个data就是传过来的json数据
    }
}

只要触发了action方法就会改变数据 发送给计算规则

就是userinfo,传的对象,json action.type

然后执行mapStateToProps(state)映射,就显示了


export function updateCityName(data) {
    return {
        type: actionTypes.UPDATE_CITYNAME,
        data
    }
}

 

                                                        会点php的前端小渣渣

                                                      2018、4、12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值