vue 3 + vite + ts tsx 语法

主要描述 vue3中 jsx的写法,写法习惯同 react

// 子组件 demo.ts
import { defineComponent, ref, reactive, onMounted } from 'vue'
export default defineComponent({
  props: {  // 父传子  子组件接收数据
    num: {
      type: Number,
      default: 0
    }
  },
  emits: ['change'], // 子传父 注册事件
  setup(props, { emit, attrs, slots,expose }) {  // 主要代码入口
    
    const state = reactive({
      name: 'vue3',
      count: 3
    })
    expose({state}) // 暴露子组件数据
    const ppt = ref(1)
    const add = () => {
      state.count++
    }
    return () => (<div>
      <h1>{props.num}++++ 父传子</h1>
      <div>{slots.default && slots.default(state)}</div>  // 默认插槽  埋点 并传入数据
      <hr />
      <div>{ slots.top && slots.top({ ppt: ppt.value }) }</div> // 具名插槽    埋点 并传入数据
      <span>{ppt.value}</span>
      <ul>                    // v-for   jsx 写法
        {[1, 2, 3, 4, 5, 6, 7, 8, 9].map(item => <li key={ item }>{ item }++++ v-for</li>)}
      </ul>
      <div>{ state.count > 100 ? <span>大于100</span> : <span>小于100</span> } ++++ v-if</div>  // v-if  jsx写法
      <div>{state.name} ++ 改变的数据</div>
      <div>{state.count}++</div>
      <a-input v-model:value={state.count} placeholder='请输入++++  v-model'></a-input>
      <a-button onClick={add}>add ++++ click</a-button>      // 使用on前缀,加方法  如 onClick onSubmit  还有自定义的emit方法 如onChange等   写法用小驼峰 
      <a-button onClick={() => emit('change', state.name)}>子传父 按钮</a-button>  // 按钮 触发子传父  改变父组件数据
    </div>)
  }
})
// 父组件   father.ts
import { defineComponent, ref } from 'vue'
import demo from './demo'  // 导入组件

export default defineComponent({
  components: { demo },   // 注册组件
  setup() {
    const num = ref(100)
    const tap = (s) => {  // 父组件定义的方法 用来改变组件内的数据 接收emit的参数改变值
      num.value = s
    }
    return () => (
      <div id='app'>
        <demo num={num.value} onChange={tap}>  // name 传给子组件的值   为onChange定义方法触发执行
          {{                                   // 插槽使用
            default: (data) => <div>{data.name} +++ 默认插槽</div>,  // 定义内部传入内容 默认
            top: (data) => <div>{data.ppt} 具名插槽</div>
          }}
        </demo>
      </div >
    )
  },
})
### 集成和使用 ElementUI 为了在基于 ViteVue 项目中集成并使用 ElementUI 组件库,需遵循一系列特定操作来确保一切正常运作。 #### 创建 Vite + Vue 项目 初始化一个新的 Vite + Vue 项目可以通过命令行工具完成。对于不熟悉这部分内容的情况,`import HelloWorld from &#39;./components/HelloWorld.vue&#39;` 和 `<HelloWorld msg="Vite + Vue" />` 是用于导入自定义组件以及在模板内实例化它的典型语法[^2]。 #### 安装 Element Plus Element Plus是由饿了么团队专门为Vue3设计的组件库,拥有丰富的样式资源。要将其加入到现有的Vue应用里,首先应当通过npm或yarn安装依赖: ```bash npm install element-plus ``` 或者 ```bash yarn add element-plus ``` 这一步骤至关重要,因为这是获取所需全部组件的基础[^3]。 #### 导入 Element Plus 到项目 一旦安装完毕,在项目的入口文件 `main.js` 中添加必要的导入语句以便全局注册这些组件: ```javascript // main.js import { createApp } from &#39;vue&#39; import App from &#39;./App.vue&#39; import ElementPlus from &#39;element-plus&#39; import &#39;element-plus/dist/index.css&#39; const app = createApp(App) app.use(ElementPlus) app.mount(&#39;#app&#39;) ``` 上述代码片段展示了如何将整个Element Plus作为插件引入应用程序,并加载默认的主题样式表[^4]。 #### 使用 Tailwind CSS (可选) 如果计划结合Tailwind CSS一起工作,则需要调整 `tailwind.config.js` 文件的内容以匹配新的路径模式,从而让Tailwind能够扫描到所有的Vue单文件组件和其他静态资源中的类名: ```javascript /** @type {import(&#39;tailwindcss&#39;).Config} */ module.exports = { content: [&#39;./index.html&#39;, &#39;./src/**/*.{vue,js,ts,jsx,tsx}&#39;], theme: { extend: {}, }, plugins: [], } ``` 此设置扩展了PurgeCSS的工作范围至所有源码目录下的`.vue`, `.js`, `.ts`, `.jsx`, 及 `.tsx` 文件[^5]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值