taro V3原生组件不生效

6yt4nkrj  于 2023-02-04  发布在  其他
关注(0)|答案(3)|浏览(398)

相关平台

支付宝小程序

小程序基础库: 2.7.4
使用框架: React

复现步骤

比如我要使用支付宝的 和 微信的 <ad-custom ...> 组件,这类taro组件库没有定义的组件如何处理?
原来是可以直接这样混写的,v3就不知道怎么做了文档里边没有找的。

期望结果

正确渲染原生组件

实际结果

没有报错,但也没有渲染。微信端caonsoe显示类似
<ad-custom .... 模板未找到

环境信息

Taro CLI 3.3.1 environment info:
    System:
      OS: Linux 5.4 Ubuntu 20.04 LTS (Focal Fossa)
      Shell: 5.8 - /usr/bin/zsh
    Binaries:
      Node: 14.17.4 - /opt/nodejs/node/bin/node
      Yarn: 1.22.11 - /opt/nodejs/node/bin/yarn
      npm: 7.20.3 - /opt/nodejs/node/bin/npm
    npmPackages:
      @tarojs/components: 3.3.1 => 3.3.1 
      @tarojs/mini-runner: 3.3.1 => 3.3.1 
      @tarojs/react: 3.3.1 => 3.3.1 
      @tarojs/router: 3.3.1 => 3.3.1 
      @tarojs/runtime: ^3.3.1 => 3.3.1 
      @tarojs/taro: 3.3.1 => 3.3.1 
      @tarojs/webpack-runner: 3.3.1 => 3.3.1 
      babel-preset-taro: 3.3.1 => 3.3.1 
      eslint-config-taro: 3.3.1 => 3.3.1 
      eslint-plugin-taro: 3.3.1 => 3.3.1 
      react: ^17.0.0 => 17.0.2
x7rlezfr

x7rlezfr1#

补充: 我粗略看了taro源码,没找到合适的地方可以扩展,只找的了一个定义常量和ts定义。
我在项目node_modules里手动修改常量也没有生效..

uelo1irk

uelo1irk2#

另外,taro是面向全端,原生组件放在 @tarojs/components 也是不合适的,我看到源码里边有 @tarojs/plugin-platform-alipay 的平台支持插件,那么我建议 @tarojs/components 里边只放默认全局全端的组件如 TextView 或者其它抹平了平台差异的组件,而常用其它的平台组件则放在平台支持插件里面按照原平台的语法书写(如:react也不使用导入组件,如: <ad ...> , 而不是 <Ad ...> ),额外的没有提供的插件则 在项目配置里边由用户自己定义,如:

...
  alipay: {
    nativeComponents:{
      ad: {
        'ad-type': 'string',
        'on-show': {
          // options...
        }
      },
      'ad-custom':{
        // ...
      }
    },
    postcss: {...}
}
...

目前使用非定义组件是不会报错的,建议全部严格编译,未定义的插件报错,并提示用户配置

b1uwtaje

b1uwtaje3#

Taro 已经提供了这样的机制,@tarojs/components 里放的是各端都有的基础组件,然后每个端会有自己的插件来进行扩展,如果你发现有些组件或者 API 没有支持到,也可以用 https://github.com/NervJS/taro-plugin-inject 插件来进行扩展

相关问题