Taro基础知识学习

一、安装及使用

CLI工具安装

需要使用 npm 或者 yarn 全局安装 @tarojs/cli

复制代码
//使用 npm 安装 CLI
npm install -g @tarojs/cli

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

//使用 cnpm 安装 CLI
cnpm install -g @tarojs/cli

//使用npm info查看Taro的版本信息
npm info @tarojs/cli

初始化项目

复制代码
taro init 【项目名】

安装依赖

复制代码
//进入项目所在文件夹
cd [项目名]

//使用 yarn 安装依赖
yarn

//使用 npm 安装依赖
npm install

//使用 pnpm 安装依赖
pnpm install

在微信小程序端运行程序

复制代码
//使用yarn
yarn dev:weapp

//使用npm
npm run dev:weapp

项目目录

├── dist 编译结果目录

├── config 配置目录

├── dev.js 开发时配置

├── index.js 默认配置

└── prod.js 打包时配置

├── src 源码目录

├── pages 页面文件目录

├── index index页面目录

├── index.js index页面逻辑

└── index.css index页面样式

├── app.css 项目总通用样式

└── app.js 项目入口文件

└── package.json 项目配置文件

└──.editorconfig 编辑器格式化

└──.eslintrc Eslint配置

└──.gitignore 配置不上传的文件,不进行版本管理

└──yarn.lock 锁定版本

二、配置页面路由

在【app.config.ts】中配置页面路由

复制代码
export default defineAppConfig({
  pages: [
    //新加入的页面
    'pages/hhx/index',
    'pages/index/index',

  ],
  window: {
    backgroundTextStyle: 'light',
    navigationBarBackgroundColor: '#fff',
    navigationBarTitleText: 'WeChat',
    navigationBarTextStyle: 'black'
  }
})

【子组件的编写与传值】

新建页面【children.jsx】

复制代码
import { View, Text } from '@tarojs/components'

function Child(props) {         //props参数接收父组件传递过来的数据
    return (
        <View>
            <Text>Child.props:{props.userName}</Text>
        </View>
    )
}

//导出组件
export default Child

在父组件中引入,即可使用子组件【index.jsx】

复制代码
import React, { useState } from 'react'
import { View, Text } from '@tarojs/components'
import { useLoad, } from '@tarojs/taro'
import Child from './children'
import './index.less'

export default function Index () {
  useLoad(() => {
    console.log('Page loaded.')
  })

  const msg = '早安,世界!'

  const [ userName ] = useState('hhx')

  return (
    <View className='index'>
      <Text> {msg} </Text>
      <Child />
      <Text> {userName} </Text>
      <Child userName={userName} />
    </View>
  )
}

路由

taro的路由是写在【app.config.js】/【app.config.ts】

复制代码
export default defineAppConfig({
  pages: [                                                        // 页面路由
    'pages/index/index',
    'pages/order/order',
  ],
  window: {                                                       // 窗口
    backgroundTextStyle: 'light',
    navigationBarBackgroundColor: '#fff',
    navigationBarTitleText: '订单',
    navigationBarTextStyle: 'black'
  },
  tabBar: {                                                       // 底部导航栏
    color: '#999',
    selectedColor: '#333',
    backgroundColor: '#fff',
    borderStyle: 'white',
    list: [
      {
        pagePath: 'pages/index/index',                             // 页面路径
        text: '首页',                                              // 文字
        iconPath: 'assets/images/index-unselected.png',            // 未选中图标
        selectedIconPath: 'assets/images/index-selected.png'       // 选中图标
      },
      {
        pagePath: 'pages/order/order',
        text: '订单',
        iconPath: 'assets/images/order-unselected.png',
        selectedIconPath: 'assets/images/order-selected.png'
      }
    ] 
  }
})

静态资源引入

【工具的引入】

复制代码
//写工具函数
export function print1(){
    console.log('这是个打印机!')
}

export function print2(){
    console.log('这是个复读机!')
}

在页面中引用工具

复制代码
import { print1, print2 } from '../../Tools'

//这里工具是函数,需要用{}进行包裹,不是组件,组件不需要{}包裹

【图片的引入】

复制代码
//先定义后续要使用的图片的名字,因为后续编译之后,图片的路径会发生变化,所以后续使用图片要用图片的名字

import {Image} from '@tarojs/components'
import 【图片名】 from '图片地址'

//在后续函数中,使用<Image />标签进行使用
<Image src={图片名} />

路由跳转

路由跳转

naviagateTo('pages/blogs/blogs') 小程序、h5、react-nactive都支持的跳转方式

redirectTo('pages/blogs/blogs') 不记录上一页,支持三端

switchTab('pages/blogs/blogs') 支持三端,要使用switchTab跳转,需要在app.json

中配置tabBar

navigateBack() 返回上一页,支持三端

reLaunch('pages/blogs/blogs') 关闭当前页面,重新打开一个新页面,支持三端

getCurrentPages() 获取当前页面栈,可以用于页面返回,不支持H5

具体实践

复制代码
//定义路由跳转函数

const goIndex1 = () => {
        Taro.navigateTo({ url: '/pages/index/index'})
}

//在按钮中使用路由跳转函数

<Button onClick={goIndex1}>返回首页</Button>

【运算符】

taro中不支持if else语句,需要使用三元运算符、短路运算符进行替代

三元运算符

{变量===条件?值1:值2}

短路运算符

{变量===条件 && 值1 || 值2}

【Taro Hooks】

在 Taro 中使用 Hooks API 很简单,Taro 的专有 Hooks(例如 usePageScroll, useReachBottom)从 @tarojs/taro 中引入,框架自己的 Hooks (例如 useEffect, useState)从对应的框架引入

复制代码
import { usePageScroll, useReachBottom } from '@tarojs/taro' // Taro 专有 Hooks
import { useState, useEffect } from 'react' // 框架 Hooks (基础 Hooks)

//onLaunch 生命周期钩子 等同于 App的入口

useLaunch(() => {
  console.log('onLaunch')
})

//等同于页面的 onUnload 生命周期钩子

useUnload(() => {
  console.log('onUnload')
})
相关推荐
寒秋花开曾相惜1 小时前
(学习笔记)3.8 指针运算(3.8.3 嵌套的数组& 3.8.4 定长数组)
java·开发语言·笔记·学习·算法
是翔仔呐2 小时前
第11章 显示外设驱动:I2C协议OLED屏、SPI协议LCD屏字符/图片/中文显示
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
_李小白2 小时前
【AI大模型学习笔记之平台篇】第五篇:Trae常用模型介绍与性能对比
人工智能·笔记·学习
承渊政道2 小时前
【优选算法】(实战体会位运算的逻辑思维)
数据结构·c++·笔记·学习·算法·leetcode·visual studio
AI-Ming3 小时前
程序员转行学习 AI 大模型: 踩坑记录:服务器内存不够,程序被killed
服务器·人工智能·python·gpt·深度学习·学习·agi
m0_716765233 小时前
C++提高编程--STL常用容器(set/multiset、map/multimap容器)详解
java·开发语言·c++·经验分享·学习·青少年编程·visual studio
2501_945318493 小时前
零基础学习AI的选型指南:CAIE认证与编程型AI认证如何取舍
人工智能·学习
承渊政道3 小时前
【优选算法】(实战推演模拟算法的蕴含深意)
数据结构·c++·笔记·学习·算法·leetcode·排序算法
Keep learning!3 小时前
PCA主成分分析学习
学习·算法
浮白载笔的夜晚3 小时前
【科普向】模拟电路(Analog Circuits)与射频电路(RF Circuits)的区别
学习