前提: 一个小web前端,完全不会android 跟iOS 的开发,首次接触,有很多不懂的问题。请见谅。

环境: win7

上一篇 : React-Native 开发(一) Android环境部署,Hello react-native

1、目录结构

入口文件为 main.js、之所以不在 index.android.js 直接写 是因为本来 react-native 就是一套代码,运用在android 跟 iOS 平台上,所以只需要一个入口文件,分别在两个其他的文件中引入改入口文件就可以啦。

api 文件夹中放的是 请求接口的代码

component 文件夹中放置组件

config 中放置的是项目的相关配置

redux 文件夹中 分别用 actions / reducers / store 文件夹 放置 redux 的三个东西。

2、定义action

其中一个action

var courseInitState = {
    courseList: [],
    loading: true,
};

3、把reducer分类,分别定义在不同的文件

其中一个reducer

export default function (state = courseInitState, action) {

    switch (action.type) {

        case 'GET_COURSE_LIST':
            return {...state, courseList: action.courseList};

        case 'COURSE_LOADING':
            return {...state, loading: action.loading}
        default:
            return state;
    }
}

4、把reducers 在同一个文件内引入,并且合并

import { combineReducers } from 'redux';
import previewReducer from './preview';
import courseReducer from './course';
import groupReducer from './group';
import headReducer from './head';
import videoRedecer from './video';

var reducers = combineReducers({
    previewReducer: previewReducer,
    courseReducer: courseReducer,
    groupReducer: groupReducer,
    headReducer: headReducer,
    videoRedecer: videoRedecer
});

export default reducers

5、传入 reducer 初始化 store

import { createStore, applyMiddleware,compose } from 'redux';
import thunk from 'redux-thunk';
import reducers from '../reducers'

var store = createStore(
    reducers,
    compose(
        applyMiddleware(thunk)
    )
)

export default store;

6、在main 文件中引入 store

import React, { Component } from 'react';
import { Provider } from 'react-redux';
import PreviewList from './component/PreviewList';
import stores from './redux/store';
import GroupList from './component/GroupList';
import Nav from './component/Nav';
import {
  StyleSheet,
  View,
  Text,
} from 'react-native';
const store = stores;

function render() {
    return (
      <Provider store = { store }>
        <Nav />
      </Provider>
    );
  }

store.subscribe(function(){
    render();
});

export default render

 7、在入口文件 index.android.js 文件中注册一个app

import { AppRegistry } from 'react-native';
import main from './main';

AppRegistry.registerComponent('AwesomeProject', () => main);

React-Native 开发(二) 在react-native 中 运用 redux的更多相关文章

  1. STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解)

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) 前面 ...

  2. react第十二单元(react路由-使用react-router-dom-认识相关的组件以及组件属性)

    第十二单元(react路由-使用react-router-dom-认识相关的组件以及组件属性) #课程目标 理解路由的原理及应运 理解react-router-dom以及内置的一些组件 合理应用内置组 ...

  3. React Native 开发豆瓣评分(三)集成 Redux

    什么是 redux redux 是一个用于管理 js 应用状态(state)的容器.比如组件 A 发生了变化,组件 B 要同时做出响应.常见的应用场景就是用户的登录退出操作:未登录状态,个人中心显示登 ...

  4. React Native开发中自动打包脚本

    React Native开发中自动打包脚本 在日常的RN开发中,我们避免不了需要将我们编写的代码编译成安装包,然后生成二维码,供需要测试的人员扫描下载.但是对于非原生的开发人员来说,可能不知如何使用X ...

  5. React-Native(二):React Native开发工具vs code配置

    从网上翻阅了一些开发react-native的开发工具时,发现其实可选的工具还是比较多的Sublime Text,WebStrom,Atom+Nuclide,vs code 等.因为我用.net生态环 ...

  6. React native开发中常见的错误

    react native环境搭建请移步:react native环境搭建 这里说说react native创建完成之后,运行中出现的常见问题, 问题1: java.lang.RuntimeExcept ...

  7. React Native 开发豆瓣评分(二)路由配置

    路由管理使用官方推荐的 React Navigation; 配置环境 安装相关依赖 yarn add react-navigation react-native-gesture-handler Lin ...

  8. React Native开发入门

    目录: 一.前言 二.什么是React Native 三.开发环境搭建 四.预备知识 五.最简单的React Native小程序 六.总结 七.参考资料   一.前言 虽然只是简单的了解了一下Reac ...

  9. React Native开发技术周报1

    (一).资讯 1.React Native 0.21版本发布,最新版本功能特点,修复的Bug可以看一下已翻译 重要:如果升级 Android 项目到这个版本一定要读! 我们简化了 Android 应用 ...

随机推荐

  1. Surface Dial 与 Windows Wheel UWP应用开发

    随着微软发布 Surface Studio 在演示视频中非常抢眼的一个配件就是 Surface Dial,Dial 是Windows输入设备大家庭中的新成员我们把它归类为Windows Wheel 类 ...

  2. cocos2dx截整屏、截部分屏

    我的环境是cocos2dx 2.x的版本 [CCRenderTexture] CCRenderTexture这个动态纹理类,顾名思义就是可以动态创建纹理图片. 屏幕截图主要步骤: > 开始截图: ...

  3. Oracle数据库语言修改成UTF-8

    select * from v$nls_parameters; sqlplus "/ as sysdba" SQL> SHUTDOWN IMMEDIATE SQL> S ...

  4. MVC中登录页图片验证码总结

    直接上代码了 using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Imagi ...

  5. FTPS (FTP over SSL) vs. SFTP (SSH 文件传输协议): 我们如何做出选择

    第一个RFC的FTP协议发布通过网络使用FTP协议(由RFC 959或更高版本)的文件传输始于1980年,FTP提供上传,下载和删除文件,创建和删除目录,读取目录内容的功能.虽然FTP是非常受欢迎的, ...

  6. JQuery和Ajax在ASP.NET MVC中的基本应用

    当我们在开发Web应用程序中使用JQuery和Ajax异步调用来实现很多功能时,不仅提高了程序的性能,而且给用户一个更好的交互式界面操作体验.接下来我们依旧用简单的实例来学习下它们的应用. 创建一个A ...

  7. .NET Core跨平台:使用.NET Core开发一个初心源商城总括

    1..NET Core基本介绍 a 作为一个.NET的开发者,在以前的开发中,我们开发的项目基本都是部署在windows服务器上,但是在windows服务器上的话某些比较流行的解决访问量的方案基本都是 ...

  8. Mysql动态sql语句,用当前时间做表名

    在mysql备份操作中, 我们可能要使用表名和当前时间来做为备份表的名称,但是MySQL在存储过程中不支持使用变量名来做表名或者列名. 例如:有一个表"user",我需要备份一份, ...

  9. 【转】简单的java缓存实现

    本文转自 http://my.oschina.net/u/866190/blog/188712 提到缓存,不得不提就是缓存算法(淘汰算法),常见算法有LRU.LFU和FIFO等算法,每种算法各有各的优 ...

  10. .Net程序员学用Oracle系列(19):我知道的导出和导入

    1.传统的导出/导入工具 1.1.EXP 命令详解 1.2.IMP 命令详解 1.3.EXP/IMP 使用技巧 2.新的导出/导入工具 2.1.EXPDP/IMPDP 参数说明 2.2.EXPDP/I ...