📜  React Native 中的 Redux 存储(1)

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

React Native 中的 Redux 存储

Redux 是 React Native 中广为使用的数据存储框架。它提供了一种集中式的状态管理方式,方便应用程序开发者们进行状态管理。Redux 通过 store 来管理应用程序的所有状态,而每个状态改变的时候,Redux 会通知所有相关的组件对应地更新状态。

安装

在使用 Redux 之前,首先需要在项目中安装 Redux。可以使用 npmyarn 来安装 Redux:

npm install --save redux

或者

yarn add redux
使用
定义 Reducer

在使用 Redux 之前,需要先定义好 ReducerReducer 是一个纯函数,它接收 stateaction 两个参数,返回新的 state。在 Redux 中,state 是不可变的,即每个 Reducer 需要返回新的 state 对象,而不是直接修改原对象。

const initialState = {
  count: 0,
};

const 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;
  }
};
创建 Store

Redux 中的 store 是 Redux 应用中唯一的数据存储位置。我们通过一个叫做 createStore 的方法来创建一个 Store:

import { createStore } from 'redux';

const store = createStore(reducer);
使用 Store

我们可以访问 store.getState() 方法来获取当前的 state

console.log(store.getState()); // { count: 0 }

通过 Store 中提供的 dispatch(action) 方法,我们可以分发一个 action 并触发软件的状态更新:

store.dispatch({ type: 'INCREMENT' });
console.log(store.getState()); // { count: 1 }

store.dispatch({ type: 'DECREMENT' });
console.log(store.getState()); // { count: 0 }
使用 Redux in React Native

在 React Native 中,我们可以使用 react-redux 库来使用 Redux。该库提供了 Providerconnect 两个重要的 API,它们能够帮助我们更方便地使用 Redux。

Provider

Provider 组件是 react-redux 库中的一个组件,它提供了一个上下文环境,使其子组件能够访问到整个 Redux 的 Store。我们可以使用 Provider 组件将整个 App 包裹起来。

import { Provider } from 'react-redux';

const App = () => (
  <Provider store={store}>
    <MyComponent />
  </Provider>
);
connect

connect 方法来自 react-redux 库,它能够将 Redux 的 Store 注入到组件的 props 中,并根据 Store 的变化来更新组件。我们需要使用 connect 方法将 Redux 上的状态传递给组件。

import { connect } from 'react-redux';

const mapStateToProps = (state) => ({
  count: state.count,
});

const MyComponent = ({ count, dispatch }) => (
  <View>
    <Text>{count}</Text>
    <Button title="Increment" onPress={() => dispatch({ type: 'INCREMENT' })} />
    <Button title="Decrement" onPress={() => dispatch({ type: 'DECREMENT' })} />
  </View>
);

export default connect(mapStateToProps)(MyComponent);

在上面的示例中,我们将 count 从 Redux 中取出并作为组件的 props 之一传递给 MyComponent 组件。根据 Redux 的结构,我们将 count 作为组件状态存储为一个变量。此外,我们还将 dispatch 作为属性传递给组件,在用户点击按钮时分发 Redux action。

总结

Redux 提供了一种集中式的状态管理方法,它能够帮助应用开发人员更好地管理状态。在 React Native 中,我们可以使用 react-redux 库来更加方便地使用 Redux。Providerconnect API 是 react-redux 库中的两个重要组件,它们能够为 Redux 提供上下文环境,并在组件中注入 Redux。