📜  react-redux 导入 - Javascript (1)

📅  最后修改于: 2023-12-03 15:34:40.127000             🧑  作者: Mango

使用React-Redux进行状态管理

React-Redux是一个用于管理React状态的库,它建立在Redux状态管理库之上。它允许您使用Redux来管理React组件的状态并在整个应用程序中进行共享。

安装React-Redux

首先,您需要使用npm或yarn安装React-Redux:

npm install react-redux
yarn add react-redux
把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组件使其可在应用程序中的任何组件中使用。

Using connect() 高阶函数

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() 提交actions

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应用程序中共享状态的利器,它可确保应用程序中的所有组件都具有统一的数据源。