redux & react-redux

81 阅读1分钟

redux 

redux 支持 react jquery angular

安装对应版本的redux

创建一个store 文件夹{index.js    action/index.js  reducer/index.js}

action/index.js
const sendAction =()=>{    return{        type:'send_Action',        value:"发送了一个action"    }}moudle.export={    sendAction}

reducer/index.js
const initState = {    value:'我是初始化state'}const reducer = (state =initState ,action)=>{       switch(action.type){        case 'send_Action':            return Object.assign({},state,action)        default:            return state    }}moudle.export={    reducer}

index.js
import {createStore} from 'redux'import {reducer} from './reducer'const store = createStore(reducer);export default store;

使用

function Home() {  handleClick =()=>{  const action = sendAction()  //发送一个action,利用store  store.dispatch(action)}
页面使用
<div>{store.getState().value}</div>

问题一: dispatch触发action,页面数据未更新

   componentDidMount =()=>{    store.subscribe(()=>{      this.setState({}) //更新数据    })   }

react-redux

安装react-redux

npm install react-redux
依赖 npm install redux

两个重要的方法: provider  connect

provider  这个组件能够使整个app 都能获取store中的数据
connect   这个方法能够使store 和组件之间进行关联

react-redux 基础构建 action  reducer store 构建同上, redux 状态数据全局应用

provider应用

app.js
import store from './store/index'
import {Provider} from 'react-redux'
function App(){
    return (
        <Provider store={store}>
            <div>
                <A/>
                <B/>
            </div>
        </Provider>
    )
}

connect 使用

A 发送方
导入connect 方法
import {connect} from 'react-redux'
调用connect 方法
connect(mapStateProps,mapDispatchToProps,mergeProps,options)
class A extends React.component{    
    handleClick = ()=>{
        console.log('A',this.props)
        this.props.sendAction()
    }
    render <button onClick = {this.handleClick}> + </button>
}
const mapDispatchToProps = (dispatch) =>{ //dispatch 发送action
    return {
        sendAction:()=>{
            dispatch(sendAction()) //此处调用的sendAction 是 action/index中声明的action
        }
    }
}
export default connect(null,mapDispatchToProps)(A) //接收数组的函数 发送action的函数 要加强的组件



B 接收方
import {connect} from 'react-redux'
class B extends React.component{
    render(){
        //this。props.count 获取到的是connect 关联后传递给B组件的值
        return <div>{this.props.value}</div>
    }
}
connect(state=>state)(B)