赞
踩
Taro 是一个开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发 微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ 小程序 / H5 等应用。现如今市面上端的形态多种多样,Web、React Native、微信小程序等各种端大行其道,当业务要求同时在不同的端都要求有所表现的时候,针对不同的端去编写多套代码的成本显然非常高,这时候只编写一套代码就能够适配到多端的能力就显得极为需要。
Taro 3.x官方文档
按照官方文档去做项目的搭建就好了
需要注意的是使用公司的源可能会报错导致搭建失败
$ npm install -g @tarojs/cli
$ taro init myApp
$ npm install
├── dist 编译结果目录
├── config 配置目录
| ├── dev.js 开发时配置
| ├── index.js 默认配置
| └── prod.js 打包时配置
├── src 源码目录
| ├── pages 页面文件目录
| | ├── index index 页面目录
| | | ├── index.js index 页面逻辑
| | | └── index.css index 页面样式
| ├── app.css 项目总通用样式
| └── app.js 项目入口文件
└── package.json
原生小程序开发经验;
React基础;
TypeScript基础(如果项目基于TS开发)。
前置知识是需要提前掌握的,否则可能会在开发中遇到很多问题,事倍功半。
一些常见的使用场景
原生小程序
Page({ data: { text: "This is page data." }, onLoad: function(options) { // 页面创建时执行 }, onShow: function() { // 页面出现在前台时执行 }, onReady: function() { // 页面首次渲染完毕时执行 }, onHide: function() { // 页面从前台变为后台时执行 }, onUnload: function() { // 页面销毁时执行 }, onPullDownRefresh: function() { // 触发下拉刷新时执行 }, onReachBottom: function() { // 页面触底时执行 }, onShareAppMessage: function () { // 页面被用户分享时执行 }, onPageScroll: function() { // 页面滚动时执行 }, onResize: function() { // 页面尺寸变化时执行 } })
Taro class组件
export default class Example extends Component { constructor(props) { super(props); this.state = { text: "This is page data.", }; } // 对应onLoad方法,官方建议用constructor或componentDidMount(订阅、副作用时)替换, // 该钩子在React中已废弃 componentWillMount() {} // 对应onShow方法 componentDidShow() {} // 对应onReady方法 componentDidMount() {} // 对应onHide方法 componentDidHide() {} // 对应onUnload方法 componentWillUnmount() {} // 组件更新前执行(接收到新的props或state时),首次渲染不触发, // 不能在这里setState,该钩子在React中已废弃 componentWillUpdate(prevProps, prevState) {} // 接收到新的props时执行,推荐使用componentDidUpdate替换,该钩子在React中已废弃 componentWillReceiveProps(nextProps) {} // 组件更新后执行 componentDidUpdate(prevProps, prevState) { // 经常会在这里通过判断新旧数据的变化来做一些操作,比如 // if (prevProps.sessionId !== this.props.sessionId) { // 已经登录了 // } } // 子组件是否需要重现渲染 shouldComponentUpdate(nextProps, nextState) {} // onPullDownRefresh、onReachBottom、onShareAppMessage...与原生小程序一致 }
在React中已废弃的生命周期componentWillMount、componentWillUpdate、componentWillReceiveProps不建议使用。
授权个人信息使用 getUserProfile 代替 getUserInfo,后者已经被废弃
获取手机号码使用getPhoneNumber,具体用法见src/components/sign
以上都需要绑定在button上通过点击触发
项目中使用了taro-ui,但是引入的时候却不生效
需要注意taro的版本,如果是3.0需要使用next版本的Taro-ui
在小程序的管理后台可以配置公众号关注组件
<OfficialAccount onLoad='success' onError='failed'></OfficialAccount>
项目中加入这个组件就可以在对应的位置展示出来
因为业务需要,必须获取到用户的手机号码
export default class login extends Component {
getPhoneNumber(event) {
}
render() {
return (
<Button openType='getPhoneNumber' onGetPhoneNumber="this.onGetPhoneNumberHandler.bind(this)">获取手机号</Button>
)
}
}
Taro 的使用和小程序略有不同,在小程序的官方文档是
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
绑定的回调方法是不太一样的需要注意,
还需要注意的一点是拿到的加密信息要先encode一下再传给服务端进行交互
tabbar的 图片大小无法调整
导航栏的按机型获取高度
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。