React Redux 是一个富强的库,它将 Redux 的状况管理才能与 React 的组件架构相结合。经由过程利用 React Redux,你可能有效地管理当用的状况,进步代码的可保护性跟可测试性。本文将供给一个实战教程,帮助你轻松上手 React Redux,并控制其核心技能。
React Redux 是 Redux 的官方 React 绑定库,它供给了一系列的实用东西,使得在 React 利用中利用 Redux 变得愈加简单。React Redux 的核心头脑是将 Redux 的状况与 React 组件的状况绑定,从而实近况况的双向同步。
起首,你须要安装 Redux 跟 React Redux。可能经由过程 npm 或 yarn 来安装:
npm install redux react-redux
# 或许
yarn add redux react-redux
接上去,创建一个 Redux 的 store:
import { createStore } from 'redux';
const initialState = {
count: 0
};
function reducer(state = initialState, action) {
switch (action.type) {
case 'INCREMENT':
return { ...state, count: state.count + 1 };
case 'DECREMENT':
return { ...state, count: state.count - 1 };
default:
return state;
}
}
const store = createStore(reducer);
利用 Provider
组件将 Redux 的 store 注入到 React 利用的顶层,如许任何组件都可能拜访到 store:
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import App from './App';
import store from './store';
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
利用 connect
高阶组件将 Redux 的 state 跟 dispatch 方法连接到 React 组件的 props 中:
import React from 'react';
import { connect } from 'react-redux';
class Counter extends React.Component {
render() {
return (
<div>
<p>Count: {this.props.count}</p>
<button onClick={this.props.increment}>Increment</button>
<button onClick={this.props.decrement}>Decrement</button>
</div>
);
}
}
const mapStateToProps = state => ({
count: state.count
});
const mapDispatchToProps = dispatch => ({
increment: () => dispatch({ type: 'INCREMENT' }),
decrement: () => dispatch({ type: 'DECREMENT' })
});
export default connect(mapStateToProps, mapDispatchToProps)(Counter);
对须要处理异步逻辑的情况,可能利用 Redux Thunk 旁边件来处理异步 action:
import thunk from 'redux-thunk';
import { createStore } from 'redux';
const store = createStore(reducer, applyMiddleware(thunk));
// 异步 action creator
function fetchData() {
return dispatch => {
dispatch({ type: 'FETCH_DATA_REQUEST' });
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => dispatch({ type: 'FETCH_DATA_SUCCESS', payload: data }))
.catch(error => dispatch({ type: 'FETCH_DATA_FAILURE', error }));
};
}
经由过程以上实战教程,你现在曾经控制了 React Redux 的基本利用方法。React Redux 的富强之处在于它可能帮助你以可猜测的方法管理当用的状况,从而进步代码的可保护性跟可测试性。在现实项目中,你可能根据须要进一步扩大年夜 Redux 的功能,比方利用 Redux Saga 或 Redux Toolkit 来简化异步逻辑的处理。