快速入门vue3.0系列之生命周期及父传值,建议“收藏细品”,会持续更新!❤

目录

生命周期

父传子

常用加值方法

代码抽离


生命周期

组合式 API 上的生命周期钩子与选项式 API 的名称相同,但前缀为 on:即 mounted 看起来像 onMounted。

setup() {//setup组合式api的入口函数,在beforeCreate之前执行
    const count=ref(0)
    console.log('setup');
    onBeforeMount(() => {//组件挂载到节点之前执行
      console.log('组件挂载到节点之前onBeforeMount');
    })
    onMounted(() => {
      console.log('onMounted组件挂载完成');
    })
    onBeforeUpdate(() => {//组件更新前执行
      console.log('组件更新前执行onBeforeUpdate');
    })
    onUpdated(() => {//组件更新完成后执行
      console.log('组件更新完成后执行onUpdated');
    })
    onBeforeUnmount(() => {
        console.log('组件卸载之前执行onBeforeUnmount');
    })
    onUnmounted(() => {
        console.log('组件卸载完成后onUnmounted');
    })
    return{
      count
    }
  }

父传子

// father组件
setup() {
  //father作为父级组件,通过provide函数提供数据共享(不限层次)
  // provide只能向下传递数据,向子孙组件传递数据
  provide('globalVal','这是father组件传递过来的值')
  const str = ref('str')
  provide('globalStr',str)

  return{
    str
  }
}
// One组件
setup() {
    const val = inject('globalVal')
    const str = inject('globalStr')
    provide('globalStr','这是one组件传递过来的值')
    return {
      val,
      str
    }
  }
// Two组件
setup() {
    // inject通过自定的函数名获取到父级组件的共享数据
    const val = inject('globalVal')
    // 父组件和爷组件都有globalStr,引用近的父组件内容
    const str = inject('globalStr')
    return {
      val,
      str
    }
  }  

常用加值方法

const addUser = () => {
    // alert(data.val);
    // 向数组的前面加一条数据
    // 向前添加
    data.todos.unshift({ name: data.val, show: false });
    // data.todos.push(//向后添加
    //   {name:data.val,show:false}
    // )
    data.val = "";
  };

代码抽离

import userAdd from '../hook/userAdd.js'
export default {
  setup() {
    const {total,val,todos,addUser} = userAdd();
    return{
      total,val,todos,addUser
    }
  },
};
// 自定义函数
// function userAdd() {
//   const data = reactive({
//     val: "",
//     todos: [
//       { name: "学习", show: false },
//       { name: "敲代码", show: false },
//     ],
//   });
//   const addUser = () => {
//     // alert(data.val);
//     // 向数组的前面加一条数据
//     // 向前添加
//     data.todos.unshift({ name: data.val, show: false });
//     // data.todos.push(//向后添加
//     //   {name:data.val,show:false}
//     // )
//     data.val = "";
//   };
//   const total = computed(() => data.todos.length);
//   return {
//     ...toRefs(data),
//     addUser,
//     total,
//   };
// }
  • 博主公_号:前端老实人,期待各位小伙伴加入同学们一起学习的队伍哦❤
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端老实人

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值