美文网首页
react-redux 结合 react hook 之 基础篇

react-redux 结合 react hook 之 基础篇

作者: 漫漫的小白龙 | 来源:发表于2020-07-08 08:07 被阅读0次

前言:

1、redux类似于vue的vuex,除了一些细节和使用方法,两者原理和使用场景没有多大的区别。

2、react-redux是为了让redux更好的在react上使用诞生的,主要就是provide、connect两个方法。

3、redux主要用于公共数据管理、公共方法管理、某个对象的状态管理。

基础用法及步骤:

1、安装相关包文件

npm i redux --save
npm i react-redux --save

2、创建actions.js文件,存放action

//此处action只是为了举例,是最简单的方式,在后面会记录更多方式创建
//此处的Test便是一个action生成函数,返回的是一个对象,具有type属性与其他附带的值
export const Name= (payload) => ({
     type: 'NAME',
     payload   //此处为调用action生成函数时候传的参数
})
export const Rank = () =>({
    type: 'RANK'
})

3、创建reducers.js文件,存放reducer

//引入combineReducers,用来组合多个reducer
import {combineReducers} from 'redux'
//tip  此处的函数形参必须要有默认值,否则会报错
function getName(state = '',action){
    //此处的形参不是完整的state了,而是我们单独操作的那个状态值,也就是后面state对象中的name
    //因为combineReducers的作用,它会生成一个state对象,包含每一个reducer处理后返回的值
    switch(action.type){
        case 'NAME':
            state = action.payload
            return state
        default:
            return state
    }
}
 
function changeRank(state = 0,action){
    switch(action.type){
        case 'RANK':
            state++
            return state
         default:
            return state
   }
}

const reducer = combineReducers({
    name: getName,
    rank: changeRank
})

export default reducer

4、创建store.js,生成store对象

import {createStore} from 'redux'
import reducer from './reducer'

const store = createStore(reducer)

export default store

5、在主入口js中引入相关store,这里已index.js为例

import React from 'react'
import ReactDOM from 'react-dom'
import App from './index' //组件app
import {Provider} from 'react-redux'  //用来装载store,使store渗入各个组件
import store from './store' //创建的store的位置

ReactDOM.render(
    <Provider store={store}>
        <App/>
    </Provider>,
    document.getElementById('root')
);

6、在组件中使用redux

import { useSelector, useDispatch } from 'react-redux'
import {Name} from '../../redux/actions'

let Content = () => {
  let name = useSelector(state => state.name)
  let dispatch = useDispatch()
  return(
    <div>
      redux 结合 hook
      显示{name}
      <div onClick={() => {dispatch({type:'NAME',preload:'my name'})}}></div>
    </div>
  )
}
export Content

相关文章

网友评论

      本文标题:react-redux 结合 react hook 之 基础篇

      本文链接:https://www.haomeiwen.com/subject/wfytcktx.html