React Native高手进阶RNios developers

React Native+Redux开发实用教程

2019-04-15  本文已影响12人  CrazyCodeBoy

期待已久的新教程上线啦!解锁React Native开发新姿势,一网打尽React Native最新与最热技术,点我Get!!!

React Native+Redux开发实用教程

为了帮助大家快速上手在React Native与Redux开发,在这本文中将向大家介绍如何在React Native中使用Redux?,以及一些必备基础以及高级知识

本文参考了《新版React Native+Redux打造高质量上线App》课程的部分讲解,更多关于React Native与Redux的实战技巧可在《新版React Native+Redux打造高质量上线App》中查看。

那么如何在React Native中使用Redux?呢?

准备工作

根据需要安装以下组件。

npm install --save redux
npm install --save react-redux
npm install --save-dev redux-devtools

react-redux介绍

react-redux是Redux 官方提供的 React 绑定库。 具有高效且灵活的特性。

视图层绑定引入了几个概念:

react-redux提供以下API:

Provider

API原型:<Provider store>

使组件层级中的 connect() 方法都能够获得 Redux store(将store传递给App框架)。通常情况下我们需要将根组件嵌套在 <Provider>标签 中才能使用 connect() 方法。

class Index extends Component {
    render() {
        return  <Provider store={configureStore()}>
            <AppWithNavigationState />
        </Provider>
    }
}

以上代码片段的完整部分可以在课程源码中查找。

在上述代码中我们用 <Provider>标签包裹了根组件AppWithNavigationState,然后为它设置了store参数,store (Redux Store)接受的是应用程序中唯一的 Redux store 对象。

connect

API原型:connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])

连接 React 组件与 Redux store,连接操作会返回一个新的与 Redux store 连接的组件类,并且连接操作不会改变原来的组件类。

react-redux提供了connect函数,connect是一个高阶函数,首先传入mapStateToProps、mapDispatchToProps,然后返回一个生产 Component 的函数(wrapWithConnect),然后再将真正的Component作为参数传入wrapWithConnect(MyComponent),这样就生产出一个经过包裹的Connect组件,如:export default connect(mapStateToProps)(HomePage);

使用步骤

这里通过Redux提供的combineReducers方法,将多个reducer聚合成一个rootReducer。

这里通过Redux提供的createStore方法,创建了store;

以上代码片段的完整部分可以在课程源码中查找。

这里我们使用react-redux提供的<Provider>来包裹我们的根组件,让根组件的所以子组件都能使用 connect() 方法绑定 store。

通过上述代码我们声明App组件需要整个 store 中的哪一部分数据作为自己的 props,这里用到了connect,我们将select作为参数传给connectconnect会返回一个生成组件函数,然后我们将App组件当做参数传给这个函数。

connect是一个高阶函数,首先传入mapStateToProps、mapDispatchToProps,然后返回一个生产 Component 的函数(wrapWithConnect),然后再将真正的Component作为参数传入wrapWithConnect(MyComponent),这样就生产出一个经过包裹的Connect组件

在这里我们通过dispatch将action发送到store,store会将这个action分发给reducerreducer会创建当前state的副本,然后修改该副本并返回一个新的state,这样一来store树将被更新,然后对应组件的props将被更新,从而组件被更新;

总结

未完待续

参考

上一篇下一篇

猜你喜欢

热点阅读