Taro踩坑

小程序转Taro

小程序转Taro的时候,会带上一个@withWeapp('page'),这是一个标识,用来表示是从小程序转换过来的,在一次调试的时候报错store undefined,这个错很难发现。

clipboard.png

往state里面修改任意数据

通过this.setState((preState) = > {})设置 这里是设置state里面的对象
clipboard.png
this.setState((preState) => {
     //修改基本类型数据
      preState.current = e.detail.value;  

    //修改某一对象属性
      preState.tabObj.title = e.detail.value;
    //修改整个对象
      preState.tabObj = {title:e.detail.value,text:'xxx'}

     //修改某一数组对象属性
      preState.dataList[0].name = e.detail.value;
     //修改某一数组对象全部属性
      preState.dataList[0] = {
        name: e.detail.value,
        age: 9
      };
      //修改整个数组
      preState.dataList = [
        {
          name: e.detail.value,
          age: 99
        },
        {
          name: e.detail.value,
          age: 88
        },
      ];
    }

jsx中不能使用匿名函数, 需要bind

<View onClick={this.handleClick}></View>  // 正确
<View onClick={()=>this.handleClick(params)}></View>  // 错误
<View onClick={this.handleClick.bind(this, params)}></View>  // 正确

函数组件命名

在1.3.x以上的版本,支持函数式组件,但组件名必须以render开头,帕斯卡命名。

函数的命名必须以 render 开头,render 后的第一个字母需要大写
函数的参数不得传入 JSX 元素或 JSX 元素引用

class SomePage extends Taro.Component {
  renderHeader () {
    const { header } = this.state
    return <View>{header}</View>
  }

  renderFooter (footer) {
    return <View>{footer}</View>
  }

  render () {
    return (
      <View>
        {this.renderHeader()}
        {...}
        {this.renderFooter('footer')}
      </View>
    )
  }
}

任何组件的事件传递都要以 on 开头

在 v1.3.x 之后,自定义组件间的事件传递可以不用 on 开头,但内置组件的事件依然是以 on 开头的,以 on 开头命名你的事件。

const element = <View onClick={this.onTag} />
const element2 = <Input onFocus={this.onFocus} />
const element3 = <CustomElement onAnimationEnd={this.props.onAnimationEnd} />

解决h5缓存

编译配置存放于项目根目录下 config 目录中,包含三个文件

  • index.js 是通用配置
  • dev.js 是项目预览时的配置
  • prod.js 是项目打包时的配置

prod.js打包配置文件里面,加上一下代码

output: { // 解决js在浏览器缓存
  filename: 'js/[name].[hash:8].js',
  chunkFilename: 'js/[name].[chunkhash:8].js'

// mini-css-extract-plugin 的附加配置,在 enableExtract 为 true 的情况下生效
 miniCssExtractPluginOption: { // css缓存
    filename: 'css/[name].css',
    chunkFilename: 'css/[id].css'
  }
}

打开微信小程序页面转发

// 在需要打开的页面配置,使用方式同微信小程序

Taro.showShareMenu()


引入静态资源

直接这样引入,在编译后还是报错找不到图片。taro中静态资源引入需要直接通过ES6的import语法引入,Taro静态资源引入

<Image src='./assets/banner04.png' />

小程序路由跳转传参性能优化

在小程序中,可以使用 this.$preload 函数进行页面跳转传参
clipboard.png

环境判断

Taro.get_env() 获取当前环境

Trao.ENV_TYPE
-ENV_TYPE.WEAPP    微信小程序环境
-ENV_TYPE.SWAN    百度小程序环境
-ENV_TYPE.ALPAY    支付宝小程序环境
-ENV_TYPE.TT    字节跳动小程序环境
-ENV_TYPE.WEB    web【H5】环境
-ENV_TYPE.RN    React Native 环境
// 判断小程序还是h5
    if (Taro.getEnv() === Taro.ENV_TYPE.WEAPP) {
      this.$preload({
        'goodsId': id,
        'money': money
      })
    } else if (Taro.getEnv() === Taro.ENV_TYPE.WEB) {
      url = `../userpost/userpost?goodsId=${id}&money=${money}`
    }

更多文章访问个人博客:http://www.lfanliu.top

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • jsx中不能使用匿名函数, 需要bind Taro中的跳转事件与生命周期的关系 navigateTo 会进 co...
    晌风阅读 4,808评论 0 0
  • 使用taro下的组建ScrollView 时候样式出不来 全局样式引入import 'taro-ui/dist/s...
    风雪之隅_b6f7阅读 1,455评论 0 0
  • 编译h5的时候遇到以下错 解决方案如下config/index.js添加esnextModule:['taro-ui']
    风雪之隅_b6f7阅读 294评论 0 0
  • 网络相关 1、请求接口没有响应解决方法:配置httpRequest接口请求域名白名单 使用build时候出现的错误...
    源川阅读 179评论 0 0
  • 函数是面向过程的,函数的调用不需要主体,而方法是属于对象的,调用方法需要一个主体-即对象。 npm install...
    Gukson666阅读 467评论 0 3