Redux是用于JavaScript应用程序的流行状态管理库,通常与React这样的框架使用。它有助于以可预测的方式管理应用程序的状态,并实现不同组件之间的有效数据流。
Redux以单向数据流模式为核心。应用程序状态存储在一个称为“商店”的单个JavaScript对象中。组件可以派遣操作以修改状态,Redux使用还原器来处理这些动作并相应地更新状态。这种方法促进了集中且可预测的国家管理系统。
Redux Toolkit是Redux团队的官方软件包,简化了与Redux合作的过程。它提供了一组工具,实用程序和抽象来简化和增强开发体验。
Redux工具包的一些关键功能包括:
- redux工具包的
configureStore
:它提供了一种简化的方法来创建具有明智的默认值的Redux商店,包括内置的中间件,例如Redux Thunk或Redux Saga。 - 使用
createSlice
的还原设置:此实用程序通过将动作类型和动作创建者组合到状态和相关还原器的单个简洁的“切片”中,简化了Redux还原器的创建。 - 不变性和沉浸式集成:Redux工具包利用沉浸库简化了对状态的不变更新。这使开发人员可以以更直观和可变的方式编写还原逻辑,同时确保在引擎盖下不变。
- 增强的调试经验:Redux Toolkit与Redux DevTools扩展程序集成在一起,提供强大的调试工具集来检查状态变化,时间旅行和重播操作。 通过使用Redux Toolkit,开发人员可以更有效地编写Redux代码,并且使用更少的样板编写。它促进最佳实践,减少常见的错误来源并提高整体开发人员的生产率。
总体而言,Redux工具包简化并增强了Redux的开发体验,使其成为在复杂JavaScript应用程序中管理状态的绝佳选择。
## react.js with redux工具包
- 安装必要的依赖项:
npm install react react-dom @reduxjs/toolkit react-redux
- 创建一个Redux Store(Store.js):
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';
const store = configureStore({
reducer: {
counter: counterReducer,
},
});
export default store;
3.创建redux slice(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;
4.创建反应组件(counter.js):
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement } from './counterSlice';
const Counter = () => {
const count = useSelector((state) => state.counter);
const dispatch = useDispatch();
return (
<div>
<h1>Counter: {count}</h1>
<button onClick={() => dispatch(increment())}>Increment</button>
<button onClick={() => dispatch(decrement())}>Decrement</button>
</div>
);
};
export default Counter;
5.使用应用程序中的redux商店(app.js):
import React from 'react';
import { Provider } from 'react-redux';
import store from './store';
import Counter from './Counter';
const App = () => {
return (
<Provider store={store}>
<Counter />
</Provider>
);
};
export default App;
6.填充应用程序(index.js):
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(<App />, document.getElementById('root'));