在react项目中使用redux和reduxjs/toolkit

在react项目中使用redux和reduxjs/toolkit

  1. 使用npx创建项目,创建完成之后安装react/redux@reduxjs/toolkit两个依赖
npx create-react-app test
npm i react/redux @reduxjs/toolkit
  1. 新建一个todoSlice.js文件,创建slice片段(在react中称为slice片段,在vue中称为store)
// 初始化一个redux中的state
import { createSlice } from "@reduxjs/toolkit";

const todoSlice = createSlice({
  name: "chp",
  initialState: {
    todos: [1, 2, 3],
  },
  reducers: {
    addState(state, action) {
      state.todos.push(action.payload);
    },
  },
});

export const { addState } = todoSlice.actions;
export default todoSlice.reducer;
  1. 在项目根目录下(与启动目录index.js同层级)创建一个store.js文件,将写好的todoSlice文件配置进去,这里有一个很重要的东西就是导入的名字todoStore,这个名字是在使用这个store的时候需要传入useSelector钩子函数内的
//加载todo.js中的reducer
import todoStore from "./redux/todoSlice";
import { configureStore } from "@reduxjs/toolkit";
export default configureStore({
  reducer: {
    todoStore,
  },
});
  1. 将store.js配置进启动目录index.js中
import store from './store';
import { Provider } from 'react-redux';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <Provider store={store}>
    <App />
  </Provider>
);

redux编写完成,开始使用redux。

  1. 使用redux的时候有两个不能忘记的钩子函数useSelector,useDispatch,useSelector是获取store内定义的状态值的钩子函数,useDispatch是获取store内定义的方法的钩子函数
import "./App.css";
import { useSelector, useDispatch } from "react-redux";
import { addState } from "./redux/todoSlice";
function App() {
  const { todos } = useSelector((state) => state.todoStore);
  const dispatch = useDispatch();
  const add = () => {
    dispatch(addState(todos.length + 1));
  };
  return (
    <div className="App">
      {todos.map((todo) => {
        return <div key={todo}>{todo}</div>;
      })}
      <button onClick={add}>add</button>
    </div>
  );
}

export default App;

相关推荐

  1. react项目使用reduxreduxjs/toolkit

    2024-04-09 15:42:03       36 阅读
  2. ReactReact项目是如何使用Redux的?

    2024-04-09 15:42:03       42 阅读
  3. React Redux使用@reduxjs/toolkit的hooks

    2024-04-09 15:42:03       25 阅读
  4. react项目redux以及react-router-dom

    2024-04-09 15:42:03       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 15:42:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 15:42:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 15:42:03       82 阅读
  4. Python语言-面向对象

    2024-04-09 15:42:03       91 阅读

热门阅读

  1. 常见的行为识别算法及视频处理算法

    2024-04-09 15:42:03       33 阅读
  2. 搞懂了XML!

    2024-04-09 15:42:03       35 阅读
  3. 在Linux删除几天前的日志文件

    2024-04-09 15:42:03       34 阅读
  4. Spring与Spring Boot的区别和联系

    2024-04-09 15:42:03       35 阅读
  5. html自定义禁用状态下且已选中的checkbox

    2024-04-09 15:42:03       33 阅读
  6. 对称排序(蓝桥杯)

    2024-04-09 15:42:03       35 阅读
  7. 软件版权登记的条件

    2024-04-09 15:42:03       37 阅读
  8. Go语言中如何实现多态

    2024-04-09 15:42:03       38 阅读
  9. Qt-Mat转QImage

    2024-04-09 15:42:03       29 阅读
  10. leetcode回忆法-1两数之和

    2024-04-09 15:42:03       27 阅读
  11. 【c++&leetcode】1. Two Sum

    2024-04-09 15:42:03       33 阅读
  12. [LeetCode][LCR131]砍竹子 I——推测规律

    2024-04-09 15:42:03       34 阅读
  13. 地理处理和空间分析的关键技巧

    2024-04-09 15:42:03       31 阅读