欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

TSX常見簡單入門用法之Vue3+Vite

 更新時間:2022年08月19日 09:11:19   作者:?kid  
Vue3的確可以直接使用tsx開發(fā),唯一需要處理的就是children,而且處理起來還是比較不爽的,下面這篇文章主要給大家介紹了關于TSX常見簡單入門用法之Vue3+Vite的相關資料,需要的朋友可以參考下

1.安裝tsx

1.安裝tsx插件

npm install @vitejs/plugin-vue-jsx -D

2.vite.config.ts里的配置

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
 
 
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(),vueJsx()],
})

3.tsconfig.json里的配置

{
  "compilerOptions": {
    "target": "esnext",
    "useDefineForClassFields": true,
    "module": "esnext",
    "moduleResolution": "node",
    "strict": true,
    "jsx": "preserve",
    "jsxFactory": "h",
    "jsxFragmentFactory": "Fragment",
    "sourceMap": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "esModuleInterop": true,
    "lib": ["esnext", "dom"],
    "skipLibCheck": true,
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
  "references": [{ "path": "./tsconfig.node.json" }]
}

這三條為配置項 

    "jsx": "preserve",
    "jsxFactory": "h",
    "jsxFragmentFactory": "Fragment",

2.使用TSX

1.app.vue里的代碼

<template>
  <renderDom title="我是標題" @on-click="getNum"></renderDom>
</template>
 
<script setup lang="ts">
 
import renderDom from "./App";
import { provide, ref } from "vue";
 
const data = ref(false);
provide("flag", data);
const getNum = (num: number) => {
  console.log("我接受到了", num);
};
</script>
 
<style>
</style>

2.app.tsx的代碼

import { ref } from "vue";
 
let v = ref<string>("");
let flag = ref(false);
let arr = ref([0, 1, 2, 3, 4, 5]);
//  tsx不會自動結構所以該用.value還是要使用
type Props = {
  title: string;
};
const renderDom = (props: Props, ctx: any) => {
  return (
    <div>
        <button onClick={clickEmit.bind(this,ctx)}>點擊emit</button>
      <h1>{props.title}</h1>
      <div>
        <input v-model={v.value} type="text" />
        <div>
          <h1>{v.value}</h1>
        </div>
      </div>
      <div>
        <div v-show={flag.value}>正確的</div>
        <div v-show={!flag.value}>錯誤的</div>
      </div>
      {/* <div>
        <div v-if={flag.value}>正確的</div>
        <div v-if={!flag.value}>錯誤的</div>
        </div> */}
      {/* 不支持v-if 可用三元表達式去代替 */}
      <div>{flag.value ? <div>正確的</div> : <div>錯誤的</div>}</div>
      {/* 不支持v-for 但可以用map循環(huán)去代替 */}
      {/*不支持v-bind,可以直接綁定數(shù)值 */}
      <div>
        {arr.value.map((item, i: any) => {
          return (
            <div data-inext={i} onClick={clickIndex.bind(this, i)}>
              {item}
            </div>
          );
        })}
      </div>
    </div>
  );
};
 
const clickIndex = (i: any) => {
  alert(i);
};
 
const clickEmit=(ctx:any)=>{
    ctx.emit('on-click',123)
}
export default renderDom;

注意:

1.tsx里面寫的標簽內容是不會自動解構的,所以ref里面的.value還是要加上值才會出來2.tsx里面支持v-show,v-model,但不支持v-bind,v-for,v-if,所以再寫這些的時候要更改寫法

v-if使用三元表達式

  <div>{flag.value ? <div>正確的</div> : <div>錯誤的</div>}</div>

 v-for通過map函數(shù)遍歷數(shù)組來實現(xiàn)

 <div>
        {arr.value.map((item, i: any) => {
          return (
            <div data-inext={i} onClick={clickIndex.bind(this, i)}>
              {item}
            </div>
          );
        })}
  </div>

v-bind可以直接綁值

 <div data-inext={i} onClick={clickIndex.bind(this, i)}>

props和emit使用

1.props

<renderDom title="我是標題" @on-click="getNum"></renderDom>

(app.vue里傳值title)

type Props = {
  title: string;
};
const renderDom = (props: Props, ctx: any) 

(renderDom里面接收后可以使用,和以前一樣)

2.emit

const renderDom = (props: Props, ctx: any)

(拿到上下文)

 <button onClick={clickEmit.bind(this,ctx)}>點擊emit</button>

(綁定方法)

const clickEmit=(ctx:any)=>{
    ctx.emit('on-click',123)
}

 (通過emit傳值)

(以上為app.tsx文件里面)

  <renderDom title="我是標題" @on-click="getNum"></renderDom>

(綁定自定義事件) 

const getNum = (num: number) => {
  console.log("我收到了", num);
};

(拿到值去使用)

(以上為父組件收到并使用)

總結

到此這篇關于TSX常見簡單入門用法之Vue3+Vite的文章就介紹到這了,更多相關TSX常見用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue項目中配置pug解析支持

    Vue項目中配置pug解析支持

    這篇文章主要介紹了Vue項目中配置pug解析支持的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 詳解Vue computed計算屬性是什么

    詳解Vue computed計算屬性是什么

    在vue中,有時候你需要對data中的數(shù)據(jù)進行處理,或者對抓取的數(shù)據(jù)進行處理之后再掛載呈現(xiàn)到標簽中,這時候你就需要計算屬性了,當然看到這里你可能還是不了解那下面我舉幾個實例并附代碼解釋
    2023-03-03
  • vue3封裝一個帶動畫的關閉按鈕示例詳解

    vue3封裝一個帶動畫的關閉按鈕示例詳解

    這篇文章主要為大家介紹了vue3封裝一個帶動畫的關閉按鈕示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • vue 中動態(tài)綁定class 和 style的方法代碼詳解

    vue 中動態(tài)綁定class 和 style的方法代碼詳解

    這篇文章主要介紹了vue 中動態(tài)綁定class 和 style的方法,通過實例結合的形式給大家接受的非常詳細,需要的朋友參考下吧
    2018-06-06
  • vue函數(shù)input輸入值請求時延遲1.5秒請求問題

    vue函數(shù)input輸入值請求時延遲1.5秒請求問題

    這篇文章主要介紹了vue函數(shù)input輸入值請求時延遲1.5秒請求問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue封裝axios與api接口管理的完整步驟

    vue封裝axios與api接口管理的完整步驟

    在實際的項目中,和后臺的數(shù)據(jù)交互是少不了的,我通常使用的是 axios 庫,所以下面這篇文章主要給大家介紹了關于vue封裝axios與api接口管理的相關資料,需要的朋友可以參考下
    2022-01-01
  • vue 2.0 購物車小球拋物線的示例代碼

    vue 2.0 購物車小球拋物線的示例代碼

    本篇文章主要介紹了vue 2.0 購物車小球拋物線的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • vue中this.$router.go(-1)失效(路由改變了,界面未刷新)

    vue中this.$router.go(-1)失效(路由改變了,界面未刷新)

    本文主要介紹了vue中this.$router.go(-1)失效(路由改變了,界面未刷新),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-12-12
  • vue使用iframe嵌入網(wǎng)頁的示例代碼

    vue使用iframe嵌入網(wǎng)頁的示例代碼

    本篇文章主要介紹了vue使用iframe嵌入網(wǎng)頁的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 關于console.log打印結果是?[object?Object]的解決

    關于console.log打印結果是?[object?Object]的解決

    這篇文章主要介紹了關于console.log打印結果是?[object?Object]的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04

最新評論