Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序

这篇具有很好参考价值的文章主要介绍了Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、安装 Taro 脚手架工具

npm install -g @tarojs/cli
yarn global add @tarojs/cli

2、taro 初始化项目

taro init taro-app

Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序

安装 taro-ui

  • cd taro-app
  • yarn add taro-ui

全局引入taro-ui样式

import 'taro-ui/dist/style/index.scss'
3、项目路由路径
  • page 对应项目路径
  • lazyCodeLoading 组件按需注入
  • Taro.navigateTo({url: xxx}) 小程序内部跳转
export default {
    "lazyCodeLoading": "requiredComponents",
    pages: [
        'pages/index/index',
        'pages/statistics/index',
        'pages/my/index',
        'pages/about/index',
        'pages/contact/index',
        'pages/webview/index'
    ],
    // ...
}
4、全局添加分享功能

src/app.ts中添加 Taro.showShareMenu

class App extends Component {
    render() {
        Taro.showShareMenu({
            withShareTicket: true,
            // @ts-ignore
            menus: ['shareAppMessage', 'shareTimeline'],
            showShareItems: ['shareAppMessage', 'shareTimeline'],
        });

        // this.props.children 是将要会渲染的页面
        return this.props.children
    }
}
5、引导关注公众号
  • OfficialAccount
  • 关注/查看
import { OfficialAccount } from '@tarojs/components'
<OfficialAccount />

视图

Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序

6、获取用户头像/昵称
  • Taro.getUserProfile 获取用户的头像昵称
  • Taro.setStorageSync 存储信息 相当于 localStorage.setItem
  • Taro.getStorageSync 获取信息 相当于 localStorage.getItem
getUserProfile() {
    Taro.getUserProfile({
        desc: '获取用户昵称、头像',
        success: (res) => {
            Taro.setStorageSync('userInfo', res.userInfo)
            this.setState({ userInfo: res.userInfo })
        },
        fail: () => {
            console.error("您拒绝了请求");
            return;
        }
    })
}

打印 getUserProfile success(res)

Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序

7、 封装 WebView 实现跳转公众号内页
封装的webview组件
  • getCurrentInstance 获取地址栏/router
import { FC, useEffect, useState } from 'react'
import { View, WebView } from '@tarojs/components'
import { getCurrentInstance } from '@tarojs/taro'

const MyWebView: FC = () => {
    const [hrefURL, setHrefURL] = useState<string>('')

    useEffect(() => {
        const { params } = getCurrentInstance().router ?? {}
        setHrefURL(decodeURIComponent(params?.webUrl ?? ''))
    }, [])

    return (
        <View className='webview' >
            <WebView src={hrefURL} />
        </View>
    )
}
export default MyWebView

打印 getCurrentInstance()

Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序

相关页面使用时

跳转的公众号需要是企业认证的,才能配置业务域名,个人公众号暂不支持WebView

handleGridClick(item: itemDTO) {
    Taro.navigateTo({ url: `/pages/webview/index?webUrl=${encodeURIComponent(item.url)}` })
}

跳转

Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序

8、ScrollView视图容器组件
  • Taro.getSystemInfoSync() 获取设备屏幕高度
  • 设置 scrollYheight
  • scroll-view视图容器组件各属性含义
const { windowHeight } = Taro.getSystemInfoSync()
const scrollHeight = (windowHeight * windowHeight / 750 - 140)
const scrollStyle = {
    height: scrollHeight + 'px',
}

<ScrollView
    scrollY
    enhanced={true}
    show-scrollbar={false}
    scrollWithAnimation={true}
    enable-back-to-top={true}
    style={scrollStyle}
>
    // ...
</ScrollView>

打印 getSystemInfoSync()

Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序

9、数据可视化
  • git clone echarts-for-weixin
  • ec-canvas拷贝到自己项目中src下
  • 需要给 canvas设置宽高

需要在 index.config.ts声明ec-canvas组件

export default {
    navigationBarTitleText: '前端进阶技术栈',
    usingComponents: {
        "ec-canvas": "../../ec-canvas/ec-canvas"
    }
}

index.ts 使用

function getPieChart(canvas, width, height, dpr) {
    const chart = echarts.init(canvas, null, {
        width: width,
        height: height,
        devicePixelRatio: dpr // 像素
    });
    canvas.setChart(chart);

    var option = {
        tooltip: {
            show: true
        },
        legend: {
            top: 'bottom'
        },
        series: [
            {
                name: 'Nightingale Chart',
                type: 'pie',
                radius: [35, 110],
                center: ['50%', '50%'],
                roseType: 'area',
                itemStyle: {
                    borderRadius: 8
                },
                data: [
                    { value: 56.7, name: 'Vue' },
                    { value: 36.4, name: 'Angular' },
                    { value: 72.5, name: 'React' }
                ]
            }
        ]
    }
    chart.setOption(option);
    return chart;
}
// ...
this.state = {
    ecPie: {
        onInit: getPieChart
    }
}
// ...

<View className="canvas pie">
    <ec-canvas id="mychart-dom-pie" canvas-id="mychart-pie" ec={ecPie}></ec-canvas>
</View>

在 global.d.ts 中添加以下内容

declare namespace JSX {
    interface IntrinsicElements {
        'ec-canvas': any,
        ...
    }
}

视图

Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序

EChart 相关文档

  • echarts-for-weixin
  • EChart相关示例
  • EChart中options各属性用法示例
  • 定制需要的图表类型
10、集成Markdown
  • git clone wemark
  • wemark 文件拷贝到自己的项目的src目录下
使用前配置

设置编译时复制wemark目录,修改config/index.js,在copy设置项中增加wemark,

copy: {
  patterns: [
    {
      from: 'src/wemark',
      to: 'dist/wemark',
    },
  ],
  options: {
  }
},

设置taro编译时忽略 remarkable.js,继续修改config/index.js

weapp: {
  compile: {
    exclude: [
      'src/wemark/remarkable.js',
    ]
  },
  ...
}

在 global.d.ts 中添加以下内容

declare namespace JSX {
    interface IntrinsicElements {
        'wemark': any
    }
}
封装Markdown文章详情
import { FC, useEffect, useState } from 'react'
import { View } from '@tarojs/components'
import { getCurrentInstance } from '@tarojs/taro'
import './index.scss'
import Taro from '@tarojs/taro'

const Article: FC = () => {
    const [markdown, setMarkdown] = useState<string>('')

    useEffect(() => {
        const { md, title } = getCurrentInstance().router?.params ?? {}
        setMarkdown(decodeURIComponent(md ?? ''))
        Taro.setNavigationBarTitle({
            title: decodeURIComponent(title ?? '前端进阶技术栈')
        })
    }, [])

    return (
        <View className='article'>
            <wemark md={markdown} link={true} highlight={true} type='wemark' />
        </View>
    )
}
export default Article
视图

Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序

11、调试打包上传

web端调试

  • yarn dev:h5 web端调试

微信内置 API 需要小程序开发工具调试文章来源地址https://www.toymoban.com/news/detail-441678.html

  • yarn build:weapp
  • 微信开发者工具 引入 dist文件夹即可

到了这里,关于Taro + React + TS + Taro-UI + ECharts + Markdown 开发微信小程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • taro开发微信小程序禁止下拉刷新(ios下拉出现空白问题)

    一、问题描述 最近用tarojs在做一个小程序项目时,首页需要禁止下拉刷新,于是在page.json里面添加了这段话 \\\"enablePullDownRefresh\\\":false 全局关闭下拉刷新,这段话确实禁止了下拉刷新,无论是安卓手机端还是苹果端,但是在苹果端却出现了一个问题,整个页面虽然不能下拉刷新

    2024年02月13日
    浏览(37)
  • 第一个微信小程序 Taro + React

    新建一个文件夹,在该文件夹下打开cmd,执行命令 然后新建一个taro项目 基本上一路回车就可以,可参考下面的选项 打开idea,open该项目 安装依赖 运行小程序

    2024年02月13日
    浏览(42)
  • 【taro react】---- 解决开发环境微信小程序由于主包体积过大不能预览问题

    1. 开发环境代码包大小 注意:可以看到此时主包加分包将近 5MB,上传预览将会超出限制!!! 2. 预览结果 报错:代码包大小超过限制,主包资源近3MB,限制最大2MB!!! 3. 解决办法 使用webpack的压缩插件,在开发环境编译的时候进行压缩; 进行分包处理,同时依赖也进行

    2024年02月10日
    浏览(51)
  • 关于在微信小程序中使用taro + react-hook后销毁函数无法执行的问题

    问题: 在 taro中使用navigageTo() 跳转路由后hook中useEffect 的return函数没有执行 没有执行return函数 框架版本:      tarojs:  3.6                            react:   18.0    原因: 使用navigateTo() 跳转路由的话并不会销毁页面和组件,会加入一个最大数量为十层的路由

    2024年01月24日
    浏览(45)
  • 基于Taro + React 实现微信小程序半圆滑块组件、半圆进度条、弧形进度条、半圆滑行轨道(附源码)

    1、四个档位 2、可点击加减切换档位 3、可以点击区域切换档位 4、可以滑动切换档位 给大家提供一些实现思路,找了一圈,一些文章基本不能直接用,错漏百出,代码还藏着掖着,希望可以帮到大家 ts的写法风格 index.tsx      index.module.less 防抖的工具函数debounce 的详细代码

    2024年02月06日
    浏览(60)
  • 【taro react】---- 解决 iOS 真机微信小程序 Input 密码框 type 切换会导致 Input 内容丢失问题

    1. 问题场景 在密码登陆时,有显示和隐藏密码的功能,实现方式很简单,直接对输入 input 的 type 进行 password 和 text 值进行切换,就可以实现密码的显示和隐藏。 2. 实现代码 通过修改 input 的 type 值实现密码的显示和隐藏。 密码的显示和隐藏控制图标也是通过 type 值进行判断

    2024年02月03日
    浏览(34)
  • taro vue3 ts nut-ui 项目

    查看 Taro 全部版本信息​ 可以使用  npm info  查看 Taro 版本信息,在这里你可以看到当前最新版本 使用命令创建模板项目: taro init 项目名 微信小程序自定义 TabBar 先安装 cnpm install pinia 以便解决 小程序的 页面首次加载 在 app.config.js 中设置 在  src 目录 下 pages 文件夹,在里

    2024年02月06日
    浏览(40)
  • 记录 wx-open-launch-weapp 使用react开发微信环境h5打开微信小程序

    准备工作  1、微信签名配合后端 2、必须已认证的公众号(开发模拟器不行,测试号不行) 遇见的问题: 本地调试麻烦,用的手机修改dns,和电脑一致,通过电脑代理,编译时配置host代理运行调试(因为本地开发没办法签名认证) 1、在微信编辑器,测试号内怎么试都不生效,最后发现正式

    2024年02月16日
    浏览(44)
  • 使用uni-ui 实现下拉搜索框(uniapp+uni-ui+vue3 开发微信小程序)

    需求:输入框中输入内容--远端搜索匹配的选项--展示选项(可点击选择选项) 代码实现 htm:(一个输入框input + list) js: css

    2024年01月24日
    浏览(55)
  • Taro+Vue3 小程序引入echarts表

    背景:根据需求在一个报告界面需要展示不同的echarts表来使数据更友好的显示。 效果如下: 一.taro支持echarts 官方说明:Taro 文档支持引用小程序端第三方组件库 物料文档:Taro 物料市场 | 让每一个轮子产生价值 二.引入echarts-for-weixin插件 github地址: https://github.com/ecomfe/echar

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包