由React Native 开发的移动APP,数据接口由 http://cnodejs.org/
提供
在运行debug模式的apk可能会比较,但是在真机上运行release版本不会出现这种情况
-
三方库列表
-
Android APK下载 密码: i9uh
-
下载项目
git clone [email protected]:25juan/CNode.git
-
执行 yarn 命令安装项目运行所需要的包
-
运行程序
-
如果想查看真实数据请将
CNode/src/store/url.js
中的let dev = true
置为true即可
主题列表展示主题列表详情展示换肤功能主题刷新在浏览器中打开主题刷新、分享、转发功能app 桌面图标个人资料查看APP启动页个人登录退出登录功能文章发布图片单击预览功能主题收藏杂项
在这一次的开发中,遇到了不少的问题,但是其中也学到了不少的东西,这里做一个记录,方便以后查阅.
A:redux对于初学者来说比较复杂,学习曲线比较陡峭。mobx相对比较轻量级点,容易上手,redux含有 中间件的配置,也是比较复杂的。如果把redux比作拖拉机的话,mobx就是跑车。比较适合这种小型项目。不用考虑 太多的东西,所以选择mobx。但是具体选择哪一种根据自己的业务逻辑来进行选择
的子组件可以导航到 StackNavigator
里面的组件吗?
A:不能。解决方法,将 StackNavigator
的 navigation
传入到 TabNavigator
的screenProps
里面,
TabNavigator的子组件可以 调用 this.props.screenProps.navigate("StackNavigator配置的路由")
A:mobx componentWillReact
方法在组件第一次渲染的时候是不会调用的,只有当接受到新的Props 或者
state 改变的时候才会调用。在以后的组件生命周期里面,都会执行componentWillReact
,如果组件渲染完成
要执行代码,则可以调用React 的组件生命周期方法componentDidMount
A:可以将cmd 切换到 项目名/android
文件夹下,执行gradlew clean
,然后再执行react-native run-android
A:mobx数据是响应式的,请确保你的组件加上了 @observer
注解,需要的数据可以通过@inject(需要的数据)
来
注入到组件的属性上面。
A:在使用webview 的时候,可以先把数据准备好(异步)然后再打开对应画面加载webview, 这样数据回来的时候webview 已经加载了部分css和js资源了。能够提高webview 打开的速度 。但是能够用RN 解决的尽量不用webview,毕竟会影响用户体验性的。
A:将 android\gradle\wrapper\gradle-wrapper.properties
上面的文件通过迅雷下载下来,然后将 distributionUrl 指向本地的文件
A:删除项目 ios
文件夹下的build 文件夹,当通过xcode 改变了底层的代码的时候,如:app 图标,app 的启动屏应该重新build
A:�在渲染长数据列表的时候应该尽量使用FlatList
组件,并且设置initialNumToRender = {10}
属性。这样在�页面加载的时候就只会渲染10条数据。在后续的滚动中会执行滚动渲染,不是把所有的数据渲染出来。
A:�在渲染数据列表的时候。不要把 FlatList
的onEndReachedThreshold
的值设置得太大了,设置为1即可。否则会影响整个应用的性能。
A:在低端机中即便是正式版可能会出现运行不流畅的情况,所以就需要性能上面的优化。建议开发的时候用低端机作为开发机。(荣耀6x(卡) VS 荣耀8x(较为流畅))
A:安装react-native-camera
需要翻墙,如果报Could not find com.android.support:support-v4:26.0.1
请求修改
android/build.gradle
文件
buildscript {
repositories {
jcenter()
maven { url "https://maven.google.com/" } //添加代码
}
... //其他代码
}
... //其他代码
allprojects {
repositories {
... //其他代码
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
maven { url "https://jitpack.io" } //添加代码
maven { url "https://maven.google.com/" } //添加代码
}
}