📅  最后修改于: 2023-12-03 15:34:40.127000             🧑  作者: Mango
React-Redux是一个用于管理React状态的库,它建立在Redux状态管理库之上。它允许您使用Redux来管理React组件的状态并在整个应用程序中进行共享。
首先,您需要使用npm或yarn安装React-Redux:
npm install react-redux
yarn add react-redux
我们可以通过使用Provider组件将React-Redux导入到整个应用程序中,Provider组件需要将Redux store传递给其子组件。这使得在整个应用程序中的组件中共享Redux state成为可能。
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import store from './store';
import App from './App';
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
在此示例中,我们将store传递给Provider组件。此store对象包含我们应用程序的整个状态。Provider组件使其可在应用程序中的任何组件中使用。
React-Redux提供了connect()函数,该函数是一个HOC(高阶组件),它允许我们将Redux store中的state映射到React组件的props中。
import React from 'react';
import { connect } from 'react-redux';
const Counter = (props) => {
const { count } = props;
return <div>Count: {count}</div>;
};
const mapStateToProps = (state) => {
return {
count: state.counter.count
};
};
export default connect(mapStateToProps)(Counter);
在此示例中,我们拥有一个Counter组件,它接收一个名为count的属性。通过调用connect()并将其包装在Counter组件周围,我们将Redux store中的计数器值映射到Counter组件的props中。我们使用一个名为mapStateToProps的函数来指定我们想要从store中提取的值。该函数返回一个对象,对象的键是组件中使用的属性名称,而值是从Redux store中返回的实际值。在此示例中,我们只将count属性映射到Redux store中的值。
connect()不仅可以用于从Redux store中映射值到组件的props,还可以用于在Redux store中提交actions。connect()的第二个函数参数是一个名为mapDispatchToProps的函数,该函数将dispatch()函数映射到组件的props中。dispatch()函数是Redux store使用来提交actions的一种方法。
import React from 'react';
import { connect } from 'react-redux';
import { incrementCount } from './actions';
const Counter = (props) => {
const { count, incrementCount } = props;
return (
<div>
<div>Count: {count}</div>
<button onClick={incrementCount}>Increment</button>
</div>
);
};
const mapStateToProps = (state) => {
return {
count: state.counter.count
};
};
const mapDispatchToProps = {
incrementCount
};
export default connect(mapStateToProps, mapDispatchToProps)(Counter);
在此示例中,我们在映射函数中添加了一个新的mapDispatchToProps函数,并从./actions中导入了一个新的incrementCount()函数。我们可以使用mapDispatchToProps将incrementCount()映射到Counter组件的props中。此时,我们可以在组件中使用props中的incrementCount()函数,以在Redux store中提交一个新的incrementCount action,以自增count的值。
React-Redux使得使用Redux更加容易,它提供了一种将Redux store中的状态和action分发到React组件的props中的方法。这是在一个大型的React应用程序中共享状态的利器,它可确保应用程序中的所有组件都具有统一的数据源。