整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          02-Taro頁(yè)面編寫和傳值

          02-Taro頁(yè)面編寫和傳值

          回說(shuō)到Taro打造hello-world應(yīng)用。廢話不多說(shuō),直接上肉菜

          State局部狀態(tài)

          export default class Index extends Component {
            config={
              navigationBarTitleText: '首頁(yè)'
            }
            state={
              name: "hello 前端騷年"
            }
            render () {
              const { name }=this.state
              return (
                <View className='index'>
                  <Text>{name}</Text>
                </View>
              )
            }
          }

          組件編寫和傳值

          mkdir -p src/components/child
          cd src/components/child
          touch index.jsx

          編寫組件,代碼如下

          import Taro, { Component } from '@tarojs/taro'
          import PropTypes from 'prop-types'
          import { View, Text } from '@tarojs/components'
          export default class Child extends Component {
            propTypes={
              childName: PropTypes.string
            }
            defaultProps={
              childName: ''
            }
            render () {
              const { childName }=this.props
              return (
                <View>
                  <Text>我是肉菜中的{childName}</Text>
                </View>
              )
            }
          }

          在主頁(yè)面index中引入

          import Child from "../../components/child";

          render方法中即可運(yùn)用

          render () {
            const { name }=this.state
            return (
              <View className='index'>
                <Text>{name}</Text>
                <Child childName="蒜末child"/>
              </View>
            )
          }

          頁(yè)面跳轉(zhuǎn)和傳參

          cd taroDemo
          taro create --name next  // 創(chuàng)建next頁(yè)面

          在 /src/app.jsx 中配置路由

          pages: [
            'pages/index/index',
            'pages/next/next'
          ]

          在主頁(yè)面Button上綁定跳轉(zhuǎn)事件

          goNext() {
            Taro.navigateTo({url:'/pages/next/next?nextTheme=大保健'})
          }

          在next頁(yè)面接收參數(shù)

          componentWillMount () {
            console.log(this.$router.params) // 輸出 {nextTheme: "大保健"}
            const { nextTheme }=this.$router.params
            this.setState({
              nextTheme
            })
          }

          其他頁(yè)面跳轉(zhuǎn)方式redirectTo、switchTab、navigateBack等和微信小程序很相似

          請(qǐng)求遠(yuǎn)程數(shù)據(jù)

          const params={
            url,
            data,
            header,
            method
          }
          const res=await Taro.request(params)

          集成dva開(kāi)發(fā)體驗(yàn)更好,參考基于Taro + Dva構(gòu)建的時(shí)裝衣櫥(電商實(shí)戰(zhàn)項(xiàng)目)

          注意點(diǎn)

          1.適配問(wèn)題Taro以 750px 作為換算尺寸標(biāo)準(zhǔn),尺寸單位使用px,默認(rèn)會(huì)進(jìn)行轉(zhuǎn)換rpx/rem。如果你希望部分 px 單位不被轉(zhuǎn)換成 rpx 或者 rem ,將px寫成Px或PX

          2.盡量避免在 componentDidMount 中調(diào)用 this.setState,可在 WillMount 中處理你問(wèn)為啥??因?yàn)樵?componentDidMount 中調(diào)用 this.setState 會(huì)導(dǎo)致觸發(fā)更新

          3.不要在調(diào)用 this.setState 時(shí)使用 this.state,會(huì)導(dǎo)致一些錯(cuò)誤

          4.多端組件假如有一個(gè) Child 組件存在微信小程序、百度小程序和 H5 三個(gè)不同版本可在components目錄下分別創(chuàng)建child.js child.weapp.js child.h5.js

          // 引用不變,編譯會(huì)自動(dòng)識(shí)別
          import Child from '../../components/child'

          taroDemo 項(xiàng)目地址: https://gitee.com/itxing666/taroDemo


          關(guān)注公眾號(hào): 頁(yè)面仔小楊 【實(shí)戰(zhàn)干貨、原創(chuàng)分享】

          ue 項(xiàng)目往往需要使用 vue-router 插件,剛開(kāi)始入門 Uni-app + Vue3 項(xiàng)目的同學(xué),會(huì)不會(huì)想著路由使用 vue-router V4 版本不就可以了嗎?

          不怕大家笑話,我就是這樣想的,畢竟我是第一次使用 Uni-app ,由于孕期記性賊差,所以我決定寫成筆記,加深記憶。

          uni-app 頁(yè)面路由為框架統(tǒng)一管理的,我們需要在 page.json 文件里配置每個(gè)頁(yè)面路由以及頁(yè)面樣式,有些類似小程序中的 app.json 文件,所以 uni-app 的路由用法和寫法與 vue-router 不同。

          項(xiàng)目初始化完成,對(duì)應(yīng)的 page.json 文件為:

          {
          	"pages": [ //pages數(shù)組中第一項(xiàng)表示應(yīng)用啟動(dòng)頁(yè),參考:https://uniapp.dcloud.io/collocation/pages
          		{
          			"path": "pages/index/index",
          			"style": {
          				"navigationBarTitleText": "uni-app"
          			}
          		}
          	],
          	"globalStyle": {
          		"navigationBarTextStyle": "black",
          		"navigationBarTitleText": "uni-app",
          		"navigationBarBackgroundColor": "#F8F8F8",
          		"backgroundColor": "#F8F8F8"
          	}
          }

          pages 屬性

          uni-app 通過(guò) pages 節(jié)點(diǎn)配置應(yīng)用都有哪些頁(yè)面,接收一個(gè)數(shù)組,每個(gè)元素都是一個(gè)對(duì)象,屬性有:

          屬性

          類型

          默認(rèn)值

          描述

          path

          String


          配置頁(yè)面路徑

          style

          Object


          配置面狀態(tài)欄、導(dǎo)航欄、標(biāo)題、窗口背景色

          • pages 節(jié)點(diǎn)的第一項(xiàng)為應(yīng)用入口頁(yè)(即首頁(yè))
          • 應(yīng)用中新增/減少頁(yè)面,都需要對(duì) pages 數(shù)組進(jìn)行修改
          • 文件名不需要寫后綴,框架會(huì)自動(dòng)尋找路徑下的頁(yè)面資源

          頁(yè)面跳轉(zhuǎn)

          uni-app 頁(yè)面路由跳轉(zhuǎn)有兩種方式:使用 navigator 組件跳轉(zhuǎn)、調(diào)用API 跳轉(zhuǎn)。

          1、navigator組件跳轉(zhuǎn)

          類似于 a 標(biāo)簽,但是只能跳轉(zhuǎn)到本地頁(yè)面,目標(biāo)頁(yè)面必須在 page.json 中注冊(cè)。

          <navigator url="/pages/animation-major/index" open-type="navigate">
          	<el-button type="primary">查詢</el-button>
          </navigator>

          navigator 屬性有:

          屬性名

          類型

          默認(rèn)值

          說(shuō)明

          平臺(tái)差異說(shuō)明

          url

          String


          應(yīng)用內(nèi)的跳轉(zhuǎn)鏈接,值為相對(duì)路徑或絕對(duì)路徑,如:"../first/first","/pages/first/first",注意不能加 .vue 后綴


          open-type

          String

          navigate

          跳轉(zhuǎn)方式


          delta

          Number


          當(dāng) open-type 為 'navigateBack' 時(shí)有效,表示回退的層數(shù)


          animation-type

          String

          pop-in/out

          當(dāng) open-type 為 navigate、navigateBack 時(shí)有效,窗口的顯示/關(guān)閉動(dòng)畫效果,詳見(jiàn):窗口動(dòng)畫

          App

          animation-duration

          Number

          300

          當(dāng) open-type 為 navigate、navigateBack 時(shí)有效,窗口顯示/關(guān)閉動(dòng)畫的持續(xù)時(shí)間。

          App

          hover-class

          String

          navigator-hover

          指定點(diǎn)擊時(shí)的樣式類,當(dāng)hover-class="none"時(shí),沒(méi)有點(diǎn)擊態(tài)效果


          hover-stop-propagation

          Boolean

          false

          指定是否阻止本節(jié)點(diǎn)的祖先節(jié)點(diǎn)出現(xiàn)點(diǎn)擊態(tài)

          微信小程序

          hover-start-time

          Number

          50

          按住后多久出現(xiàn)點(diǎn)擊態(tài),單位毫秒


          hover-stay-time

          Number

          600

          手指松開(kāi)后點(diǎn)擊態(tài)保留時(shí)間,單位毫秒


          target

          String

          self

          在哪個(gè)小程序目標(biāo)上發(fā)生跳轉(zhuǎn),默認(rèn)當(dāng)前小程序,值域self/miniProgram

          微信2.0.7+、百度2.5.2+、QQ

          open-type 有效值

          說(shuō)明

          平臺(tái)差異說(shuō)明

          navigate

          對(duì)應(yīng) uni.navigateTo 的功能


          redirect

          對(duì)應(yīng) uni.redirectTo 的功能


          switchTab

          對(duì)應(yīng) uni.switchTab 的功能


          reLaunch

          對(duì)應(yīng) uni.reLaunch 的功能

          字節(jié)跳動(dòng)小程序與飛書小程序不支持

          navigateBack

          對(duì)應(yīng) uni.navigateBack 的功能


          exit

          退出小程序,target="miniProgram"時(shí)生效

          微信2.1.0+、百度2.5.2+、QQ1.4.7+

          2、uni-app API 跳轉(zhuǎn)

          uni.navigateTo({
          	url: "/pages/animation-major/index",
          })

          使用 API 頁(yè)面跳轉(zhuǎn)方式有:

          1. uni.navigateTo: 保留當(dāng)前頁(yè)面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁(yè)面,使用 navigateBack 可以返回到上一頁(yè)。
          2. uni.navigateBack:關(guān)閉當(dāng)前頁(yè)面,返回上一級(jí)或多級(jí)頁(yè)面。delta 屬性設(shè)置返回層級(jí),大于頁(yè)面數(shù)時(shí)返回首頁(yè)。
          3. uni.redirectTo:關(guān)閉當(dāng)前頁(yè)面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁(yè)面。
          4. uni.reLaunch:關(guān)閉應(yīng)用內(nèi)所有頁(yè)面,打開(kāi)應(yīng)用內(nèi)某個(gè)頁(yè)面。
          5. uni.switchTab:跳轉(zhuǎn)到 tabBar 頁(yè)面,關(guān)閉其他非 tabBar 頁(yè)面。
          6. uni.preloaPage:預(yù)加載頁(yè)面,是一種性能優(yōu)化技術(shù),被預(yù)載的頁(yè)面,在打開(kāi)時(shí)速度更快。

          頁(yè)面棧

          框架以棧的形式管理當(dāng)前所有頁(yè)面, 當(dāng)發(fā)生路由切換的時(shí)候,頁(yè)面棧的表現(xiàn)如下:

          路由方式

          頁(yè)面棧表現(xiàn)

          觸發(fā)時(shí)機(jī)

          初始化

          新頁(yè)面入棧

          uni-app 打開(kāi)的第一個(gè)頁(yè)面

          打開(kāi)新頁(yè)面

          新頁(yè)面入棧

          調(diào)用 API uni.navigateTo 、使用組件 <navigator open-type="navigate"/>

          頁(yè)面重定向

          當(dāng)前頁(yè)面出棧,新頁(yè)面入棧

          調(diào)用 API uni.redirectTo 、使用組件 <navigator open-type="redirectTo"/>

          頁(yè)面返回

          頁(yè)面不斷出棧,直到目標(biāo)返回頁(yè)

          調(diào)用 API uni.navigateBack 、使用組件 <navigator open-type="navigateBack"/> 、用戶按左上角返回按鈕、安卓用戶點(diǎn)擊物理back按鍵

          Tab 切換

          頁(yè)面全部出棧,只留下新的 Tab 頁(yè)面

          調(diào)用 API uni.switchTab 、使用組件 <navigator open-type="switchTab"/> 、用戶切換 Tab

          重加載

          頁(yè)面全部出棧,只留下新的頁(yè)面

          調(diào)用 API uni.reLaunch 、使用組件 <navigator open-type="reLaunch"/>

          頁(yè)面?zhèn)鲄?/h1>

          方式1:onLoad 接收

          // 跳轉(zhuǎn)
          uni.navigateTo({
          	url: "/pages/sendManagement/index?id=123",
          })
          
          <script>
          	import { onMounted } from 'vue';
          	let parmes=null;
          	export default {
          		onLoad(options){
          			parmes=options;
          		},
          		setup() {
          			onMounted(()=> {
          				console.log('接受上個(gè)頁(yè)面?zhèn)鞯闹?#39;,parmes)
          			})
          		}
          	}
          </script>

          方式2:setup語(yǔ)法糖接收

          <script setup>
          	import { onMounted, getCurrentInstance } from 'vue';
          	onMounted(()=>{
          		let options=getCurrentInstance()
          		console.log("options--->",options.attrs);
          	})
          </script>

          onLoad 函數(shù)是監(jiān)聽(tīng)頁(yè)面加載,接收的參數(shù)是頁(yè)面?zhèn)鬟f的數(shù)據(jù),是一個(gè) object 類型。

          看到這,相信很快就能上手 uni-app + vue3 項(xiàng)目路由嘍,也可以參考官網(wǎng)教程:https://uniapp.dcloud.io/tutorial/page.html#%E8%B7%AF%E7%94%B1

          幾天學(xué)習(xí)了HTML相關(guān)的基礎(chǔ)知識(shí)之后,老師出了五道自測(cè)題,通過(guò)這幾天學(xué)習(xí)的總結(jié),和查閱相關(guān)文檔,我也作出了自己的理解,以下是我學(xué)習(xí)的相關(guān)心得分享給大家。

          1.HTML元素、標(biāo)簽和屬性之間的關(guān)聯(lián)與區(qū)別?

          如果想要搞清楚HTML元素、標(biāo)簽、屬性之間的關(guān)系,首先我們應(yīng)該了解3個(gè)概念:

          1. 什么是HTML標(biāo)簽?
            HTML標(biāo)簽由一對(duì)尖括號(hào)('<','>')包裹起來(lái)的對(duì)象,如<div><h1><p>等等都叫標(biāo)簽。絕大多數(shù)的標(biāo)簽都是成對(duì)出現(xiàn)的,如,<div></div><h1></h1><p></p>,但是也有例外,比方說(shuō)換行符<br />,分割線<hr />,這些標(biāo)簽,開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽都是自身。
          2. 什么是元素?
            一個(gè)HTML頁(yè)面是由多個(gè)元素組成的,一個(gè)元素是由一對(duì)標(biāo)簽包含某些內(nèi)容組成的,比如:<h1>Hello World</h1>,這個(gè)就是元素。
          3. 什么是屬性?
            給HTML元素附加各種樣式的叫屬性,它是以“屬性名=屬性值”這種名、值對(duì)形式出現(xiàn)的,需要注意的是,屬性必須寫在元素的起始標(biāo)簽中。

          了解上述三個(gè)概念,我明白了,一個(gè)HTML頁(yè)面就是由多個(gè)元素構(gòu)成,元素是由標(biāo)簽描述,每一個(gè)元素的特征,都是由屬性決定的。

          2.為什么說(shuō)HTML是結(jié)構(gòu)化的文檔?

          根據(jù)W3C標(biāo)準(zhǔn),HTML是一種Web語(yǔ)言,它是使用一些“標(biāo)簽”來(lái)定義網(wǎng)頁(yè)內(nèi)容的,例如我們?cè)谝粋€(gè)HTML文檔中寫<html xmlns="http://www.w3.org/1999/xhtml"></html>,就聲明了一個(gè)HTML文檔的開(kāi)始,里面可以放各種標(biāo)簽,一個(gè)HTML文檔是由以下結(jié)構(gòu)構(gòu)成的:

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <meta name="viewport" content="width=device-width, initial-scale=1.0">
              <title></title>
          </head>
          <body>
          </body>
          </html>
          

          由以上代碼不難看出,HTML結(jié)構(gòu)層次分明,是一種具有結(jié)構(gòu)層次的標(biāo)記語(yǔ)言,通過(guò)這些標(biāo)簽可以告訴瀏覽器如何做出相應(yīng)的解析。否則,如果HTML標(biāo)簽任意位置都能放置,就沒(méi)法做標(biāo)準(zhǔn)高度統(tǒng)一了,那么瀏覽器也就無(wú)法做出正確的解析了。因此,我們看到的各種網(wǎng)頁(yè),都是通過(guò)這種具有結(jié)構(gòu)化的標(biāo)簽組合而成的。

          3.表單控件中的name屬性為什么非常重要?

          表單控件中的name值,是前端與后端進(jìn)行交互時(shí)傳值的變量名稱,后端只有通過(guò)控件的name值才可以接收到該值進(jìn)行相應(yīng)的處理。

          4.為什么現(xiàn)在都不再使用表格進(jìn)行頁(yè)面布局了?

          1.頁(yè)面布局不靈活;
          2.代碼的可讀性:表格布局的代碼可讀性低,沒(méi)有使用<div><h1>等標(biāo)簽直觀;
          3.表格加載速度慢;
          4.不利于SEO;

          5.一個(gè)元素,最終呈現(xiàn)的樣式,由幾方面的因素決定的?

          1.繼承的:根據(jù)元素在文檔的結(jié)構(gòu)和層級(jí)關(guān)系來(lái)確定它的最終樣式;
          2.瀏覽器客戶端:用戶代理樣式(user agent style),基本上瀏覽器的表現(xiàn)樣式都是一致的;
          3.用戶自定義:寫在HTML文檔<style>標(biāo)簽中的樣式;
          4.行內(nèi)樣式(內(nèi)聯(lián)樣式):寫在元素的style屬性中的樣式。

          以上就是我個(gè)人的總結(jié),不知道是否完全正確,如果有錯(cuò)誤的地方煩請(qǐng)各位指正,多謝大家。


          主站蜘蛛池模板: 国产激情一区二区三区在线观看| 国产丝袜美女一区二区三区 | 99久久精品国产高清一区二区| 天美传媒一区二区三区| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 国产精品99精品一区二区三区 | 中文字幕一区二区三区有限公司| 高清一区二区三区日本久| 无码日韩精品一区二区人妻| 天码av无码一区二区三区四区| 久久精品无码一区二区三区| 香蕉久久ac一区二区三区| 国产一区二区三区手机在线观看 | 久久精品无码一区二区三区| 亚洲一区二区三区在线观看蜜桃| 老熟妇仑乱一区二区视頻| 亚洲性日韩精品国产一区二区| 精品视频一区二区三区免费 | 色欲AV蜜臀一区二区三区| 中日av乱码一区二区三区乱码 | 久久精品一区二区国产| 亚洲av乱码一区二区三区| 国模一区二区三区| 国产乱码一区二区三区爽爽爽 | 国产精品乱码一区二区三| 国产精品亚洲综合一区| 午夜精品一区二区三区在线视| 国产精品亚洲专一区二区三区| 日韩综合无码一区二区| 伊人精品视频一区二区三区| 国产午夜三级一区二区三| 国产福利一区二区三区| 国产精品视频一区二区猎奇| 精品在线一区二区三区| 日本内射精品一区二区视频| 成人一区专区在线观看| 老熟女五十路乱子交尾中出一区| 精品一区二区三区在线视频观看 | 无码人妻AV免费一区二区三区| 精品一区中文字幕| 中文字幕AV一区二区三区|