VUE3+TS 页面中写if,写循环

本文探讨了如何在Vue.js项目中结合使用TypeScript,通过示例展示了v-if、三元运算符和v-for在Ts中的实现方式,强调了类型安全和代码组织的重要性,帮助开发者理解如何提升前端项目的可维护性和效率。
摘要由CSDN通过智能技术生成
{state.remittanceList.length !== 0 && (
  <div>
    <div class={[styles['order-index-body-top-detail'], 'padding-none',        'order-index-body-top-detail-el']}>
      <div class={styles['order-son']}>
           <el-collapse accordion>
               <el-collapse-item
                   v-slots={{
                     title: () => <div class={[styles['title'], 'padding-left-30']}>付汇信息</div>,
                   }}
                >
                  <div class={[styles['importer-info'], 'padding-none']}>
                    <el-row gutter={22}>
                       {state.remittanceList.map((item) => {
                         return (
                           <el-col span={8}>
                             <div class={styles['payment-info-one']}>
                               <div class={styles['payment-info-one- left']}>
                                  {item.handle}
                               </div>
                             </div>
                           </el-col>
                         )
                         })}
                   </el-row>
               </div>
               <div class={styles['middle']}></div>
              </el-collapse-item>
             </el-collapse>
            </div>
          </div>
          <div class={styles['middle']}></div>
      </div>
  )}

页面的单个if,在js中,用v-if,在ts中的写法是 {state.test == 0 && (  )} , (  )中写页面的内容, 要求必须为单个的闭合标签

页面的三元,写法为{state.serviceType === 0 ? <CarTable /> : <ResourcesTable  />}

页面的循环,在js中用v-for , 在ts中写法为 state.priceList.map((item, i) => (  )} ,在(  )中写内容,必须为单个的闭合标签

Vue3中使用TypeScript,当在循环(如`v-for`)中遇到异步操作(例如API请求、计算属性等),通常我们会想要将这些异步操作转换为同步,以便在渲染期间数据可以稳定下来,避免组件频繁更新。这可以通过以下几种方法实现: 1. 使用`async/await`和`Promise.all()`:如果每个循环项的操作都是独立的,你可以为每个item创建一个Promise,并在`setup`生命周期钩子中使用`await Promise.all([...promises])`等待所有操作完成。 ```typescript <template> <div v-for="(item, index) in fetchedData" :key="index"> <!-- item 数据会在 await 后处理完 --> <p>{{ processItem(item) }}</p> </div> </template> <script setup> import axios from 'axios'; const fetchData = async () => { const promises = items.map(async (item) => { // 异步操作 return await axios.get('api/item', { params: { id: item.id } }); }); const data = await Promise.all(promises); // 在这里处理并赋值给 fetchedData const processedData = data.map(processApiResponse); setFetchedData(processedData); }; // 示例中的过程函数 function processApiResponse(response) { return response.data; } </script> ``` 2. `vue-async-computed`插件:这是一个用于处理异步计算属性的库,它允许你在模板中直接使用异步结果,而不会触发多次更新。 3. 管道(Pipes):如果数据转换不是非常复杂,也可以考虑使用自定义的管道(比如通过`v-if`结合`v-model`来延迟绑定直到数据可用)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值