初始setup

setup

setup作为vue3里面的一个配置项,可以在里面写方法,变量,声明周期,计算属性等等

export default {
  name: 'setup',
  // setup作为vue3里面的一个配置项,可以在里面写方法,变量,声明周期,计算属性等等
  setup() {
    // 里面的写法同原生js
    let name = 'fufu'
    let age = 20
	function getName() {
		console.log(name)	
	}
	//该方法必须有一个返回值,一般来说返回一个对象,里面的值可以直接在页面进行展示。
	return {name, age, getName}
  }
}

但是setup函数并不是只能返回一个对象,还可以返回一个渲染函数

// 在使用setup方法的时候,若想使用返回渲染函数的方法,则必须从vue里面引入h函数
import {h} from 'vue'
export default {
  name: 'setup',
  setup() {
    return () => {
       return h('h1', 'fufu')
    }
  }
}

在vue3里是可以setup配置项和vue2的data等配置项混用的(但是强烈不推荐)

export default {
  name: 'setup',
  //在vue3里面data必须为一个函数
  data() {
  	height: 170
  }
  setup() {
    // 里面的写法同原生js
    let name = 'fufu'
    let age = 20
	function getName() {
		console.log(name)	
	}
	//该方法必须有一个返回值,一般来说返回一个对象,里面的值可以直接在页面进行展示。
	return {name, age, getName}
  }
}

在混用的情况下,setup里面不可以使用vue2配置项里面的数据,但是vue2配置项里面的可以使用setup里面的数据,并且同名的情况下,setup优先级更高。(因为setup执行机制很早,那个时候连this都没有)

** 不能对setup函数使用async,因为一旦使用async后,返回的就不是一个单纯对象,而是一个包装过的promise对象了,需要使用then才能拿到需要的对象。**

上面的代码虽然可以在页面进行展示,但是其实数据并非响应式的。想要将数据进行响应式处理,必须引用ref方法,ref方法会将数据转换为一个refImpl类的实例,赋予get,set方法进行响应处理。

setup() {
    // 在里面定义变量同原生js
    let name = 'fufu'  //非响应
    let age = ref(20)//响应
    onMounted(() => {
      console.log(name, age);
      // name: fufu
      // age:RefImpl{_shallow: false, dep: Set(1), __v_isRef: true, _rawValue: 20, _value: 20}
    })
    return {name, age}
  }

非响应与响应数据结构

**注意:**setup方法执行时机在createBefor之前,只执行一次,并且里面没有this。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值