函数式编程 h函数

<template>
  <div>
    <table border>
      <tr>
        <th>id</th>
        <th>name</th>
        <th>age</th>
        <th>操作</th>
      </tr>
      <tr v-for="item in list" :key="item.id">
        <td>{{ item.id }}</td>
        <td>{{ item.age }}</td>
        <td>{{ item.name }}</td>
        <td><Btn type="success">编辑</Btn> <Btn type="error">删除</Btn></td>
      </tr>
    </table>
  </div>
</template>

<script setup lang="ts">
import { ref, reactive, h } from "vue";
// 1.template 模板书写风格 2.tsx编写风格  3.函数式组件  h函数
// h函数的源码 createVode
// h函数的优势 跳过了模板的编译
// parse -> ast -> transform -> js api ->generate ->render
let list = reactive([
  {
    id: 1,
    name: "zs",
    age: 18,
  },
  {
    id: 2,
    name: "li",
    age: 18,
  },
  {
    id: 3,
    name: "wr",
    age: 18,
  },
  {
    id: 4,
    name: "mz",
    age: 18,
  },
]);
interface Props {
  type: "success" | "error";
}
let Btn = (props: Props, ctx: any) => {
  // 第一个参数是创建的节点,第二个参数是节点的属性,第三个参数是节点的内容
  return h(
    "button",
    {
      style: {
        color: props.type === "success" ? "green" : "red",
      },
      onClick: () => {
        if (props.type == "success") {
          console.log("编辑");
        } else {
          console.log("删除");
        }
      },
    },
    ctx.slots.default()
  );
};
</script>

<style></style>

效果图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的美,让我痴迷

你的好,我会永远记住你的。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值