redux-react-hook搭建简单react hook框架

新建项目

yarn create react-app hook-demo

启动项目

  1. yarn build
  2. 启动成功后删除项目中原有代码(此处不做说明)

安装库

  1. yarn add redux-react-hook
  2. yarn add redux

代码说明

此处代码仅展示具体组件中,需要操作全局变量,使得兄弟组件发生改变时的全局变量设置情况

项目目录展示

文件目录结构

项目具体代码

// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import { makeStore } from './redux/Store';
import {  StoreContext } from 'redux-react-hook';
import * as serviceWorker from './serviceWorker';

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

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister();

// App.js
import React, {useCallback } from 'react';
import { useDispatch, useMappedState } from 'redux-react-hook';

function App() {
  const mapstate = useCallback(state => state.user,[]);
  const user = useMappedState(mapstate);
  const dispatch = useDispatch();
  const btnClick = () => {
    dispatch({
      type: "SET_USER",
      user:"admin"
    })
  }
  //  拿到公共的值---只执行一次
  // const store = useContext(StoreContext);
  // StoreContext 从 redux-react-hook中引入
  // const initialUser = store.getState().user;

  // 拿到公共的值----实时变化
  // const mapState = useCallback(state => state.user,[]);
  // 获取数据并订阅存储
  // const user = useMappedState(mapstate);
  // 使用调度工具发出修改信息
  // const dispatch = useDispatch();
  // const buttonClick = () => {
  //   dispatch({
  //     type:"SET_USER",
  //     user: "jone"
  //   })
  // }

  return (
    <div>
      {user}
      <button onClick={btnClick}>点击</button>
    </div>
  );
}

export default App;

// Store.js
import { createStore } from 'redux';
import reducer from './Reducers';

export function makeStore() {
    return createStore(reducer, {
        user: "",
    })
}
// Reducers.js
export default function reducer(state, action) {
    switch(action.type) {
        case "SET_USER": {
            return {
                ...state,
                user: action.user
            }
        }
        default:
            return state
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值