当前位置:首页 > React

react redux如何使用

2026-01-24 03:07:48React

安装依赖

确保项目已安装 React 和 Redux 相关库。通过以下命令安装核心依赖:

npm install redux react-redux @reduxjs/toolkit

创建 Store

使用 @reduxjs/toolkitconfigureStore 创建 Redux store。创建一个文件(如 store.js):

import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './features/counterSlice';

export const store = configureStore({
  reducer: {
    counter: counterReducer,
  },
});

定义 Slice

通过 createSlice 定义 Redux 的 slice(包含 reducer 和 action)。例如 counterSlice.js

react redux如何使用

import { createSlice } from '@reduxjs/toolkit';

export const counterSlice = createSlice({
  name: 'counter',
  initialState: { value: 0 },
  reducers: {
    increment: (state) => {
      state.value += 1;
    },
    decrement: (state) => {
      state.value -= 1;
    },
  },
});

export const { increment, decrement } = counterSlice.actions;
export default counterSlice.reducer;

连接 React 组件

使用 Provider 将 store 注入 React 应用。在根组件(如 App.js)中:

import { Provider } from 'react-redux';
import { store } from './store';

function App() {
  return (
    <Provider store={store}>
      <CounterComponent />
    </Provider>
  );
}

使用 Hooks 访问状态

在子组件中通过 useSelectoruseDispatch 访问状态和触发 action。例如 CounterComponent.js

react redux如何使用

import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement } from './features/counterSlice';

function CounterComponent() {
  const count = useSelector((state) => state.counter.value);
  const dispatch = useDispatch();

  return (
    <div>
      <button onClick={() => dispatch(decrement())}>-</button>
      <span>{count}</span>
      <button onClick={() => dispatch(increment())}>+</button>
    </div>
  );
}

异步操作处理

使用 createAsyncThunk 处理异步逻辑。在 slice 中添加:

import { createAsyncThunk } from '@reduxjs/toolkit';

export const fetchData = createAsyncThunk('data/fetch', async () => {
  const response = await fetch('https://api.example.com/data');
  return response.json();
});

// 在 slice 的 extraReducers 中处理异步状态
extraReducers: (builder) => {
  builder
    .addCase(fetchData.pending, (state) => {
      state.status = 'loading';
    })
    .addCase(fetchData.fulfilled, (state, action) => {
      state.data = action.payload;
      state.status = 'succeeded';
    });
}

类型安全(TypeScript)

为增强类型安全,可以定义类型化的 hooks:

import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';
import type { RootState, AppDispatch } from './store';

export const useAppDispatch = () => useDispatch<AppDispatch>();
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;

分享给朋友:

相关文章

react如何记忆

react如何记忆

React 记忆技术 在 React 中,记忆(Memoization)是一种优化技术,用于避免不必要的重新渲染或计算。React 提供了多种内置方法和第三方库来实现记忆功能。 useMemo H…

如何使用java

如何使用java

安装Java开发环境 下载并安装Java Development Kit(JDK),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME指向JDK安装路径…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gr…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…