最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 有用的vue3.0 JSX&TSX使用说明。

    正文概述 掘金(display_flow)   2021-01-09   296

    配置

    // vite.config.js
    export default {
      plugins: [vue()],
      esbuild: {
        jsxFactory: 'h',
        jsxFragment: 'Fragment'
      }
    }
    

    文件定义

    jsx/tsx:

    // 需要用到props等一系列状态
    import { defineComponent, h, ref } from 'vue'
    export default defineComponent({
      props: {
      },
      setup(props) {
        return ()=> (
         <div>你好,到二仙桥吗?</div>
        )
      }
    })
    

    下面这种写法有一个很坑的地方:msg.value失去了响应,就是点击div之后,div里的内容不会变成‘二仙桥’

    // 不需要用到props等....
    export default function(){
    
      const msg = ref("成华大道到哪儿?")
      const click=()=>{
        msg.value= "二仙桥"
      }
    
      return (
        <div onClick={click}>
          {msg.value}
        </div>
      )
    }
    
    

    一些语法注意点:

    1. 标签必须严格闭合,否则无法编译通过,如:<input type="text" name="" id="">这样是不行的,一定要:<input type="text" name="" id=""/>
    2. 第一种写法一定要import {h} from "vue"。最后还是会处理成这样。
     return ()=> h(
         <div>你好,到二仙桥吗?</div>
        )
    

    v-bind

    绑定标签属性。

    注意点:

    1. 属性的写法上和 HTML 存在区别,在写 JSX 的时候,所有的属性都是驼峰式的写法.如:className. 有些属性名不能直接绑定,如:for、class。for-> className for-> htmlFor
    2. data-* 和 aria-* 两类属性是和 HTML 一致的 data系列是指自定义数据。 aria系列是指一般是为不方便的人士提供的功能。
    3. ide的智能提示做的好,别担心。

    绑定span的title。

    export default function(){
      const msg=ref('小火汁?')  
      return(
        <span title={msg.value}>
          走成华大道(鼠标停一哈看提示)
        </span>
      )
    }
    

    v-for

    export default defineComponent({
    setup(props) {
        
      const goods = ref(["贝斯特橱柜","民思达电动车"])
      const msg = ref("商品出售:")
    
      return ()=>h(
        <div>
          {
            goods.value.map(
              i=>{
                return <div>{i}</div>
              }
            )
          }
        </div>
        )
      }
    })
    

    v-if

    三目运算符

    export default function(){
      const show=ref(true)
      return (
        <div>
          {show.value?"有人":"没有人"}
        </div>
      )
    }
    

    就这?这很不js啊,还有更好的办法吗? 因为JSX里是对象,不能是语句。。。

    // 也没有多好吧....
    export default function(){
      const show=ref(true)
      let msg;
      if (show.value){
         msg = <span>有人</span>
      }else{
        msg = <span>没有人</span>
      }
      return (
        <div>
          {msg}
        </div>
      )
    }
    

    v-on

    这一类其实就是各种事件的绑定!

    import { defineComponent, h, reactive, ref } from 'vue'
    //有状态的路由~
    export default defineComponent({
      setup(popps) {
        const msg = ref("正常小火?‍?")
        const click=()=>{
          msg.value= "精神小火?‍♂️"
          console.log("变了啊!")
        }
      
        return()=> (
          <div onClick={click}>
            {msg.value}
          </div>
        )
      }
    })
    

    v-show

    用css控制吧,略。

    model

    自己发挥~

    import { defineComponent, ref ,h} from 'vue'
    
    export default defineComponent({
      setup(props) {
        
        const msg = ref("成华大道到哪儿?")
      const click=()=>{
        msg.value= "二仙桥"
      }
    
      return ()=>h(
        <div onClick={click}>
          {msg.value}
        </div>
        )
      }
    })
    

    起源地下载网 » 有用的vue3.0 JSX&TSX使用说明。

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元