zoukankan      html  css  js  c++  java
  • vue3组合式api 和 react自定义hooks

    前言

    其实两者是一个东西,只是叫法不通
    而且显然这次是vue抄袭了react
    为了对比,我举了两个例子,都用了一套数据

    Mock.mock("/getStudent",options=>{  
      return Mock.mock({
        "list|2":[{
          id:()=>Random.guid(),
          name: ()=>Random.cname(),
          age:()=>Random.integer(1,100)
        }]
      })
    })
    

    vue3 组合式函数

    定义组合式函数(注意:这种模式只能在vue3组合式api定义的组建下使用,即setup写法组件下使用)

    // use-student.js
    import axios from "axios";
    import { ref } from "@vue/reactivity";
    
    const useStudent = () => {
      const student = ref([]);
      const syncStudent = async () => {
        const res = await axios.get("/getStudent");
        student.value = res.data.list;
      };
      return { student, syncStudent };
    };
    export default useStudent;
    

    使用

    <script setup>
    import useStudent from '../composables/use-student';
    const { student, syncStudent } = useStudent();
    </script>
    
    <template>
      <div class="home">
        {{ JSON.stringify(student) }}
        <button @click="syncStudent">测试</button>
      </div>
    </template>
    

    reac自定义hooks

    组合式函数

    // use-student.js
    import axios from "axios";
    import { useState } from "react";
    
    const useStudent = () => {
      const [student, setStudent] = useState([]);
      const syncStudent = async () => {
        const res = await axios.get("/getStudent");
        setStudent(res.data.list);
      };
      return { student, syncStudent };
    };
    export default useStudent;
    

    使用

    import useStudent from './hooks/use-student';
    
    function App() {
      const {student, syncStudent} = useStudent();
      return (
        <div className="App">
          {JSON.stringify(student)}
          <button onClick={syncStudent}>测试</button>
        </div>
      );
    }
    export default App;
    

    对比效果

  • 相关阅读:
    Browsermob-Proxy 备忘
    Restic 备份工具
    GP刷新实体视图
    SDKMAN安装使用
    The requested module '/node_modules/.vite/vue.js?v=65afd58f' does not provide an export named 'default'
    Python——执行打包提示 ‘pyinstaller‘ 不是内部或外部命令,也不是可运行的程序
    python 打包exe 方法
    Python使用阿里云镜像
    使用Python项目生成所有依赖包的清单方式
    Git GuiUI的乱码问题如何解决
  • 原文地址:https://www.cnblogs.com/dshvv/p/15657386.html
Copyright © 2011-2022 走看看