Taro+React+TS+Redux+Taro UI项目

Taro-UI 小程序开发记录(React) Taro-UI是一款基于 Taro 框架开发的多端 UI 组件库,vue和react都支持,本文背景是, 记录一些在小程序开发中可能遇到的问题。 阅读详情

Taro+React+TS+Redux+Taro UI项目

初始化搭建Taro项目

全局安装@tarojs/cli,或者直接使用 npx

这里是全局安装方法,终端输入命令:

# 使用 npm 安装 CLI
$ npm install -g @tarojs/cli

# OR 使用 yarn 安装 CLI
$ yarn global add @tarojs/cli

# OR 安装了 cnpm,使用 cnpm 安装 CLI
$ cnpm install -g @tarojs/cli

查看 Taro 全部版本信息

终端可以使用 npm info 查看 Taro 版本信息,在这里你可以看到当前最新版本

npm info @tarojs/cli

如下图:在这里插入图片描述

初始化项目

使用命令创建模板项目:

$ taro init myApp

如下图:
在这里插入图片描述
根据自己项目所需要,输入并选择相关内容
如下图:
在这里插入图片描述
此时初始化项目成功
如下图:
在这里插入图片描述

补充:npm 5.2+ 也可在不全局安装的情况下使用 npx 创建模板项目:

$ npx @tarojs/cli init myApp

编译运行Taro项目

这里以微信小程序为例,其他平台请参考Taro文档
Taro文档编译运行地址:Taro文档编译运行

微信小程序编译命令

# yarn
$ yarn dev:weapp
$ yarn build:weapp

# npm script
$ npm run dev:weapp
$ npm run build:weapp

# 仅限全局安装
$ taro build --type weapp --watch
$ taro build --type weapp

# npx 用户也可以使用
$ npx taro build --type weapp --watch
$ npx taro build --type weapp

# watch 同时开启压缩
$ set NODE_ENV=production && taro build --type weapp --watch # CMD
$ NODE_ENV=production taro build --type weapp --watch # Bash

操作步骤

因为是微信小程序,所有要先下载微信开发者工具
打开微信开发者工具,选择小程序,选择导入,此时选择刚才我们初始化创建的Taro项目
在这里插入图片描述
填写AppId,选择需求内容,勾选协议,点击确定
如下图:
在这里插入图片描述
此时微信开发者工具是这样的
在这里插入图片描述
使用VSCode打开刚才创建的Taro项目,进入该文件夹下,打开终端输入命令运行项目

taro build --type weapp --watch

如下图:
VSCode
在这里插入图片描述
微信开发者工具
在这里插入图片描述

Taro项目配置Redux

想在Taro项目中使用Redux,以前写React项目用到一个很好用的插件,所以这次还是使用该方法,其他小伙伴想正常配置请移步Taro文档。

下载依赖

终端输入

yarn add @reduxjs/toolkit @tarojs/redux react-redux

创建redux文件夹

在src文件夹中创建redux文件夹
redux文件夹目录如下:
在这里插入图片描述
index.ts文件:

// 使用rtk(reduxToolKit)官方推荐写法,降低代码复制性,其中集成createAsyncThunk类似redux-thunk可进行接口异步调用
import { configureStore } from "@reduxjs/toolkit";
import testSlice from "./features/testSlice";

// configureStore创建一个redux数据
const store = configureStore({
  // 合并多个Slice
  reducer: {
    test: testSlice,
  },
});

export default store;

testSlice.ts文件:

//使用案例
import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";

export interface TestState {
  data: object;
  title: string;
}
const initialState: TestState = {
  data: [],
  title: "获取所有数据",
};

//@ts-ignore
const getDataApi = () => getAllData().then((res: any) => res.json);
// thunk函数允许执行异步逻辑, 通常用于发出异步请求。
// createAsyncThunk 创建一个异步action,方法触发的时候会有三种状态:
// pending(进行中)、fulfilled(成功)、rejected(失败)
export const getData = createAsyncThunk("getAllData", async () => {
  const res = await getDataApi();
  return res;
});

// 创建一个 Slice
export const testSlice = createSlice({
  // 命名空间,name会作为action type的前缀
  name: "test",
  // 初始化状态
  initialState,
  // 1、定义reducer更新状态的函数
  // 2、组件中dispatch使用的action函数
  reducers: {
    // 数据请求完触发
    loadDataEnd: (state, { payload }) => {
      state.data = payload;
      state.title = "获取到数据啦";
      console.log("数据请求完触发");
    },
  },
  // extraReducers 字段让 slice 可以处理在别处定义的 actions,
  // 包括由 createAsyncThunk或其他slice生成的actions。
  extraReducers(builder) {
    builder
      .addCase(getData.pending, (state) => {
        console.log("🚀 ~ 进行中!");
      })
      .addCase(getData.fulfilled, (state, { payload }) => {
        state.data = payload;
        state.title = "获取到数据啦fulfilled";
        console.log("🚀 ~ fulfilled", payload);
      })
      .addCase(getData.rejected, (state, err) => {
        console.log("🚀 ~ rejected", err);
      });
  },
});
// 导出action函数
export const { loadDataEnd } = testSlice.actions;
// 导出reducer,创建store
export default testSlice.reducer;

修改入口文件app.ts

import { Provider } from "react-redux";
// 假设我们要使用 Redux
import store from "./redux";
// 全局样式
import "./app.less";

function App(props) {
  return (
    <Provider store={store}>
      {/* props.children 是将要被渲染的页面 */}
      {props.children}
    </Provider>
  );
}

export default App;

如下图:
在这里插入图片描述
创建home页面,修改home页面内容:

import { useEffect } from 'react'
import { useDispatch, useSelector } from 'react-redux';
import { View, Text } from '@tarojs/components'
import './index.less'

export default function Index() {
  // 获取redux
  const test: any = useSelector((state: any) => state);
  // 抛发
  const dispatch = useDispatch();
  useEffect(() => {
    console.log(test, "redux")
  }, [])

  return (
    <View className='home'>
      <Text>home</Text>
    </View>
  )
}

如下图:
在这里插入图片描述

在app.config.ts文件下添加路径:

export default defineAppConfig({
  pages: ["pages/home/index", "pages/index/index"],
  window: {
    backgroundTextStyle: "light",
    navigationBarBackgroundColor: "#fff",
    navigationBarTitleText: "WeChat",
    navigationBarTextStyle: "black",
  },
});

如图:
在这里插入图片描述

此时打印如下:
在这里插入图片描述

问题

配置Redux报错

第一次使用Taro,想要在Taro里使用redux,看文档配置了很多次入口文件,每次都是报同一个错误。
错误:“Provider”表示值,但在此处用作类型。是否指“类型 Provider”?
在这里插入图片描述
在这里插入图片描述
解决办法:将入口文件后缀名改成tsx
在这里插入图片描述
此时问题就解决了。

Taro项目配置Taro UI

Taro UI文档地址:Taro UI文档

安装Taro UI

命令:

npm install taro-ui

配置需要额外编译的源码模块
由于引用 node_modules 的模块,默认不会编译,所以需要额外给 H5 配置 esnextModules,在 taro 项目的 config/index.js 中新增如下配置项:

h5: {
  esnextModules: ['taro-ui']
}

Taro UI引入组件样式

入口文件App.tsx

import 'taro-ui/dist/style/index.scss' // 全局引入一次即可
import { Provider } from "react-redux";
// 假设我们要使用 Redux
import store from "./redux";
// 全局样式
import "./app.less";

function App(props) {
  return (
    <Provider store={store}>
      {/* props.children 是将要被渲染的页面 */}
      {props.children}
    </Provider>
  );
}

export default App;

Taro UI引入组件案例

home.tsx文件:

import Taro from "@tarojs/taro";
import { useEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import { View, Text } from "@tarojs/components";
import { AtSwipeAction } from "taro-ui";
import "./index.less";

export default function Index() {
  // 获取redux
  const test: any = useSelector((state: any) => state);
  // 抛发
  const dispatch = useDispatch();
  useEffect(() => {
    console.log(test, "redux");
  }, []);

  return (
    <View className='home'>
      <Text>home</Text>
      <AtSwipeAction
        // maxDistance={140} // 按钮宽度 * 个数
        // areaWidth={Taro.getSystemInfoSync().windowWidth * 1} //动态获取不同设备宽度
        options={[
          {
            text: "取消",
            style: {
              backgroundColor: "#6190E8",
            },
          },
          {
            text: "确认",
            style: {
              backgroundColor: "#FF4949",
            },
          },
        ]}
      >
        <View className='normal'>AtSwipeAction 一般使用场景</View>
      </AtSwipeAction>
    </View>
  );
}

预览内容如下:
在这里插入图片描述

在这里插入图片描述

Taro UI引入组件问题

各位安装的时候一定注意版本问题!!!不然一定会报各种各样的错误,甚至没有错误组件却不会显示。
我的Taro版本是v3.6.8
在这里插入图片描述
下载的Taro UI版本是3.0.0-alpha.3

"taro-ui": "3.0.0-alpha.3"

在这里插入图片描述

Taro 小程序开发大型实战(四):使用 Hooks 版的 Redux 实现应用状态管理(上篇)... 欢迎继续阅读《Taro 小程序开发大型实战》系列,前情回顾: 熟悉的 React,熟悉的 Hooks:我们用 React 和 Hooks 实现了一个非常简单的添加帖子的原型 多页面跳转和 Taro UI 组件库:我们用 Taro 自带的路由功能实现了多页面跳转,并用 Taro UI 组件库升级了应用界面 实现微信和支付宝多端登录:实现了微信、支付宝以及普通登录和退出登录 如果... 阅读详情

相关推荐

【React+Taro】从零搭建多端项目:环境配置与实战避坑指南

本文详细介绍了从零开始使用React与Taro框架搭建多端项目的完整流程。重点阐述了环境配置的正确姿势,包括使用nvm管理Node版本、利用npx初始化项目以避免依赖冲突,并提供了微信小程序开发与调试的实战避坑指南。文章还涵盖了项目配置、多端编译、条件编译以及深度优化等核心内容,旨在帮助开发者高效构建跨平台应用。

weixin_29002209的博客 449

Taro中使用Redux ( 结构最简 )

简介 在 Taro 中可以自由地使用 React 生态中非常流行的数据流管理工具 Redux 来解决复杂项目的数据管理问题。 以下是项目中 结构最简化 的实例效果,完整结构请参考官方文档 安装中间件 yarn add redux react-redux redux-thunk redux-logger 或 npm install --save redux react-redux redux-thunk 创建Store 在项目 src 目录下新增一个 store 目录,并新增index.js、action

猫老板的豆 1493

从零开始:使用Taro + React构建你的第一个微信小程序

本文详细介绍了如何使用Taro + React从零开始构建微信小程序,涵盖开发环境搭建、微信开发者工具配置、页面开发与调试技巧。通过实战经验分享,帮助开发者快速掌握跨平台小程序开发,提升开发效率与性能优化。

weixin_29009081的博客 469

taro3.x: 搭建redux环境及使用

6、另外的index.tsx使用setValue设置过的值。4、app.tsx:app.ts改为app.tsx。5、index.tsx中设置值。

星辰点点的博客 701

Taro+React、UniApp、原生小程序对比总结

摘要 Taro+React、UniApp和原生微信小程序在开发框架、生命周期、方法声明等方面存在显著差异。Taro基于React,支持多端编译,适合React开发者;UniApp基于Vue.js,跨端能力最强,工具链完善;原生小程序仅限微信生态,性能优化需手动处理。在计算属性、路由管理等方面,UniApp的Vue特性更便捷,而Taro依赖React的useMemo。选择建议:追求跨端选UniApp,React技术栈选Taro,深度微信生态选原生小程序。性能上,虚拟DOM框架在复杂页面更优,而原生小程序简单场

ace15824843202的博客 845

不用全局安装CLI!用npx快速创建Taro+React项目的3种实战姿势

本文详细介绍了使用npx快速创建Taro+React项目的三种高阶方案,包括基础模板、企业级模板和混合方案。通过npx的智能查找机制,开发者可以避免全局CLI依赖带来的版本冲突和环境问题,提升项目搭建效率和可维护性。文章还提供了性能优化和多端适配的实战技巧,助力开发者快速构建高质量的多端应用。

weixin_28723171的博客 200

【React】初探 Taro,多端开发的基础实践(一)

Taro:多端统一开发框架,支持用 React 的开发方式编写一次代码,生成能运行在微信/京东/百度/支付宝/字节跳动/ QQ 小程序/快应用/H5/React Native 等的应用。 项目构建 采用官方脚手架 @tarojs/cli,帮助文档 => 安装及使用 - Taro ⚠️CSS预处理器推荐使用 Sass ,因为 Taro 自带的 Taro UI 用的就是Sass,头铁的小伙伴也可以在 package.json/templateInfo/css 进行自定义配置,有想法的可以考虑加入 T..

YzzHA 的博客 859

UniApp vs Taro:Vue和React开发者的跨平台框架选择指南(2023最新版)

本文对比分析了2023年主流跨平台开发框架UniApp和Taro的核心差异,帮助Vue和React开发者根据项目需求做出选择。UniApp深度整合Vue生态,提供零学习曲线的开发体验;Taro则保留React范式,支持TypeScript开箱即用。文章详细比较了两者的技术栈、平台支持、性能优化及生态系统,为跨平台开发框架选型提供实用指南。

dd012的博客 571

React的移动端和PC端生态圈的使用汇总

对于一项技术,我们不能停留在五分钟状态,特别喜欢一句话,用什么方式绘制UI界面一点不重要,重要的是底层的思维,解决问题和优化的思路。由于React的生态极为庞大,本文内容...

frontend_frank的博客 772

【taro react】---- 【使用 redux 的配置笔记】

1. 目标 学会 yarn 或 npm 安装中间件 学会配置 redux 的 store 学会 store 的接入和使用 2. 安装中间件 安装redux用到的中间件: redux react-redux redux-thunk redux-logger $ yarn add redux react-redux redux-thunk redux-logger # 或者使用 npm $ npm install --save redux react-redux redux-thunk redux-lo

止于至善 631

Taro集成Redux快速上手的方法示例

前言的前言 最近被一款来自京东凹凸实验室的多终端开发框架Taro吸粉了,官方对 Taro 的简介是使用React语法,一键生成多终端应用(包括小程序 / H5 / 快应用 / RN 等),而目前 Github 的 Star 也达到了非常可观的数量:4k+。对此,笔者也尝了把鲜,体验了下如何使用Taro写微信小程序。感觉还是十分灵活易用(一气呵成,都没遇到bug!),并且 Taro 还集成了 Redux,解决了小程序没有数据流框架的痛点。 这里贴一个 Taro 的官方文档,有兴趣的同行们可以了解下~也可以和我交流~嘿嘿 前言 Redux是JavaScript 状态容器,提供可预测化的状态管理。

java项目移动和pc融合_React的移动端和PC端生态圈的使用汇总

对于一项技术,我们不能停留在五分钟状态,特别喜欢一句话,用什么方式绘制UI界面一点不重要,重要的是底层的思维,解决问题和优化的思路。由于React的生态极为庞大,本文内容部分来自一些别人的汇总,至于原文只要还是能找到的,我都会贴上地址,谢谢前期贡献的作者,如果有没有被汇总到的,欢迎在下面补充。生态圈:React官方推荐超大型项目使用的TypeScript为什么要把TypeScript放在第一位,因...

weixin_26742753的博客 446

华为/H3C/锐捷交换机配置命令对比表:一张图搞定VLAN划分与端口设置

本文详细对比了华为、H3C、锐捷三大品牌交换机在VLAN划分与端口设置中的配置命令差异,提供从基础配置到高级功能的横向对比表,帮助网络工程师快速掌握多品牌设备混用环境下的配置技巧,提升工作效率。

rust6ferris的博客 700

移动端跨平台开发深度解析:UniApp、Taro、Flutter 与 React Native 对比

移动端主流跨平台开发框架对比:UniApp、Taro、Flutter和React Native各有优势。UniApp在小程序和H5开发中最成熟高效,Taro适合React技术栈的多端开发,Flutter以高性能自绘引擎见长,React Native则是原生App开发的稳妥选择。建议根据具体业务需求选择技术栈,不必强求单一框架覆盖所有场景。UniApp+React Native的组合可以很好平衡小程序和原生App开发需求。技术选型应以业务目标和用户体验为核心,选择最适合当下场景的解决方案。

m0_57108418的博客 1423

使用3dmax Morpher制作Unity表情动画

关于游戏人物的面部表情动画 方案一:如果面部骨骼数丰富的话,可以直接做骨骼动画 方案二:采用变形器(3dmax是Morpher,maya是blendshape)修改相应通道的权重值来做表情动画 本文简述方案二的做法。 说明:本文截图中3dsMax版本为2017。笔者第一次使用3dsMax,欢迎指正。 3dmax中导入人物模型,选择需要变形的对象,即head。当前对象附带skin信息。 ...

写作帮助思考 2万+

基于轻量级神经网络MobileNet V2的水果识别种类算法研究

本文阐述了一种基于轻量级卷积神经网络MobileNet V2的水果分类与识别算法研究。为了最大限度地促进机械收获,需要一个检测系统,它可以让我们识别不同类别的水果。一个相对未开发的想法是使用深度学习和人工智能算法,不仅可以检测水果的种类,还可以检测水果是否成熟。这可以证明是有利可图的,因为它可以提供作物生长状况以及成熟和未成熟果实的个体数量,以及决定是否是收获时间的有用信息。第一步对数据进行了预处理,数据预处理技术在众多的深度学习计算中起到了重要作用。

qq_43556680的博客 1640

TypeScript + React Native + Taro:三端一体开发究竟难不难?

掌握TypeScript跨端开发新思路,实现一次编写三端运行。结合React Native与Taro框架,提升项目复用率与维护效率,适用于iOS、Android及小程序。架构清晰、类型安全,大幅降低调试成本,值得收藏。

PixelFlow的博客 902

51单片机也能玩转信号发生器?手把手教你用DAC0832和LM358输出四种标准波形

本文详细介绍了如何使用51单片机和DAC0832芯片搭配LM358运放,自制低成本信号发生器,实现正弦波、矩形波、三角波和锯齿波四种标准波形的输出。从硬件选型、电路设计到编程实现,手把手教你完成这一实用电子项目,总成本不到50元,适合电子爱好者和学生实践。

weixin_30530939的博客 552

taro 缺点_Taro实践和踩坑

Taro实践从临时接到任务要做一个答题微信小程序,为什么快速上手选用Taro到现在实践了3个小程序,也算是有些经验和总结,在此记录一下选择原因基于React语法规范,上手几乎0成本,满足基本开发需求支持TS,支持ES7/ES8或更新的语法规范支持CSS预编译器,Sass/Less等支持Hooks(日常开发几乎不需要redux场景)支持状态管理,Redux/MobX一套代码多端运行,开发成本低Tar...

weixin_34982726的博客 1284

CMakeTestCCompiler.cmake错误解决

CMakeTestCCompiler.cmake错误解决欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 最近编译项目的时候,遇到一个cmake的错误,具体错误信息如下: /path-to-pr

昨夜星辰的博客 2万+

从 0 到 1 玩转小智 AI 智能音箱:开发教程 + 实战项目全攻略

如果说 MCP 是工具箱,那 SDK 就是 “技能模板”—— 小智音箱的自定义技能本质是 “意图识别 + 逻辑响应” 的组合,就像给嵌入式设备写驱动程序,只要按规则调用接口,就能实现各种功能。小智 AI 音箱的开发门槛并不高,核心是利用 MCP SDK 封装好的接口,结合嵌入式开发的 “硬件对接 + 逻辑编程” 思维,就能实现各种自定义功能。从环境搭建到技能开发,再到实战项目落地,每一步都是对 “软件控制硬件” 的实践 —— 而这正是嵌入式开发的核心魅力。

weixin_42300449的博客 1193

taro标签_Taro 使用指南

Taro 就是可以用 React 语法写小程序的框架,拥有多端转换能力,一套代码可编译为微信小程序、百度小程序、支付宝小程序、H5、RN等1、入门1.1、安装 CLI 及项目初始化npm install -g @tarojs/clitaro init 项目名Taro初始化项目.png可以选择使用 SCSS 、TS、Redux1.2、编译至各种平台// 编译为小程序npm run dev:weapp...

weixin_32568295的博客 1929

点云结构面智能识别与裂隙网络分析系统

点云结构面智能识别系统摘要 本系统采用深度学习与传统几何算法融合的方法,实现岩石结构面的智能识别与分析。系统包含7个核心模块:点云预处理、结构面识别、分组分割、参数计算、粗糙度分析、裂隙网络生成和可视化。技术路线结合PointNet++深度学习架构与RANSAC、区域生长等传统算法,通过预处理→深度学习识别→几何精修→参数计算→网络构建的流程实现高精度分析。预处理模块实现点云降噪、下采样和法向量估计,深度学习模块基于改进的PointNet++架构进行特征提取和分类。系统支持多种点云格式输入,提供完整的结构面

huanghm88的专栏 345

Taro实践和踩坑

Taro实践和踩坑 从临时接到任务要做一个答题微信小程序,为什么快速上手选用Taro到现在实践了3个小程序,也算是有些经验和总结,在此记录一下 文章目录Taro实践和踩坑选择原因开发准备编译配置样式设计稿及尺寸单位覆盖主题`css`预编译器`styled-component`字体图标`Iconfont`地址插件配置使用`AtIcon`踩坑转`wechat`微信小程序转`H5`转`alipay`支付宝小程序 选择原因 基于React语法规范,上手几乎0成本,满足基本开发需求 支持TS,支持ES7/ES

伪伪的喵喵。。 1068

ESP32 WIFI 智能巡线小车设计与实现(四足 / 四轮通用)

本文设计的 ESP32 WIFI 智能巡线小车,硬件模块化、软件轻量化,兼容四足与四轮两种结构,实现了自动巡线与 WIFI 远程控制双功能。系统成本低、易上手,适合嵌入式初学者学习 WIFI 通信、传感器应用、运动控制等核心知识点,也可在此基础上扩展蓝牙控制、避障、视觉识别等功能。

weixin_42300449的博客 152

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

React+Taro微信小程序开发避坑指南:从环境配置到发布全流程

本文为React开发者提供了一份详尽的Taro微信小程序开发避坑指南。内容涵盖从Node.js版本管理、项目搭建、依赖安装的常见问题解决,到微信开发者工具的关键配置、项目结构优化(状态管理、网络请求封装、路径别名),以及最终的构建发布与性能优化全流程,旨在帮助开发者高效、稳定地完成跨端小程序开发。

weixin_29018335的博客 652

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: Mac 前端项目运行环境配置
下一篇: React+ts+less+storybook的组件项目相关配置及其内容
IChenSY
博客等级 码龄6年 14粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值