Redux是JavaScript中成熟的状态管理库,核心遵循单一数据源、状态只读、纯函数更新三原则;现代开发推荐使用Redux Toolkit简化流程,适用于多组件共享状态、逻辑复杂或需调试回溯的场景。
状态管理,简单说就是统一管好应用里所有“会变的数据”——比如用户是否登录、购物车里有几件商品、列表正在加载还是出错了。这些数据叫“状态(state)”,散落在各个组件里容易混乱、难同步、难调试。Redux 就是 JavaScript 中一个成熟的状态管理库,它不绑定 React,但和 React 配合最常见。
它坚持三件事:
{ type: 'LOGIN_SUCCESS', user: {...} })告诉 store “我要变”现在推荐用 Redux Toolkit(RTK),它大幅简化了传统 Redux 的样板代码,官方也默认推荐。
npm install @reduxjs/toolkit react-redux
configureStore 创建,自动集成 DevTools 和 thunk 等中间件createSlice 定义初始状态、reducer 函数和自动生成的 action creatorsuseSelector 读状态,用 useDispatch 派发 action比如实现 +1 / -1 功能:
features/counter/counterSlice.js):import { createSlice } from '@reduxjs/toolkit'
const counterSlice = createSlice({
name: 'counter',
initialState: 0,
reducers: {
increment: state => state + 1,
decrement: state => state - 1,
}
})
export const { increment, decrement } = counterSlice.actions
export default counterSlice.reducer
app/store.js):import { configureStore } from '@reduxjs/toolkit'
import counterReducer from '../features/counter/counterSlice'
expor
t const store = configureStore({
reducer: {
counter: counterReducer,
}
})
Counter.jsx):import { useSelector, useDispatch } from 'react-redux'
import { increment, decrement } from '../features/counter/counterSlice'
function Counter() {
const count = useSelector(state => state.counter)
const dispatch = useDispatch()
return (
{count}
)
}别一上来就上。它适合:
如果只是单个组件内部状态,或父子组件传几层 props 就能解决,用 useState 或 useReducer 更轻量。
基本上就这些。Redux 不复杂,但容易忽略“为什么需要它”这个前提。