发布于2021-05-30 12:02 阅读(1209) 评论(0) 点赞(14) 收藏(0)
- //Options API
- export default {
- data() {
- return{
-
- }
- },
- methods:{
-
- },
- computed:{
-
- }
- }
-
- //组合式API
- export default {
- setup(){
-
- }
- }
- 复制代码
vue create 项目名
vue add vue-next
,创建3.0的项目npm i vite-app 项目名
cd 项目名
npm i
npm run dev
.value
.value
(意思是return出来以后,用小胡子就可以直接使用)- let a = '你好',
- b = ref(2)
- console.log(unref(a,b)) //'你好',2
- 复制代码
- let a = 0;
- console.log(toRef(a)) //ObjectRefImpl {_object: 0, _key: undefined, __v_isRef: true}
- 复制代码
- let a = 0
- console.log(isRef(a)) // false
- 复制代码
- // 第一种写法:不可手动修改值
- setup() {
- let a = computed(()=>{
- let total = state.supNum + state.oppNum
- return ((state.supNum/total)*100).toFixed(2) + '%'
- })
- return{
- a
- }
- }
-
- //第二种写法:可以利用set修改,当a所依赖的值supNum和oppNum改变会触发get回调函数,如果修改a的值会触发set回调函数(a.vlue = a.vlue+1就会触发)
- setup() {
- let a = computed({
- get:()=>{
- let total = state.supNum + state.oppNum
- return ((state.supNum/total)*100).toFixed(2) + '%'
- }
- set:(val)=>{
- console.log(val,222)
- }
- })
- return{
- a
- }
- }
-
- 复制代码
- setup(props){
- watchEffect(()=>{
- console.log(props.title)//第一次渲染的时候就会立即执行一次
- })
- let y = ref(0),
- z = ref(0);
- //如果需要监听多个值
- watchEffect(()=>{
- console.log(y.value,z.value)//必须写value值,因为咱们监听的是value值,不是y的ref对象
- })
- }
- 复制代码
- //侦听单个数据
- setup(){
- watch(state,()=>{
- console.log(state.supNum)
- })
- //侦听state下的某个数据
- watch(()=>state.supNum,()=>{
- console.log('你好'+state.supNum)
- })
- //侦听ref创建的响应式数据,输出改变后的值和之前的值
- let x = ref(0)
- setup(){
- watch(x,(x,prevX)=>{
- console.log(x,prevX)
- })
- }
- //侦听多个数据用数组传参,数组中任意值改变都会触发watch函数
- watch([x,y],([x,y],[prevx,prevy]=>{
- console.log(x,y,prevx,prevy)//prevx,prevy改变之前的值
- }))
- 复制代码
- setup(){
- //return出去的值可以直接在html中使用,{{num}}
- return{
-
- }
- }
- 复制代码
- <template>
- <div>
- <h3>{{ title }}</h3>
- <div>
- <p>支持人数:{{ supNum }}</p>
- <p>反对人数:{{ oppNum }}</p>
- <p>支持率:</p>
- <button @click="change(0)">支持</button>
- <button @click="change(1)">反对</button>
- </div>
- </div>
- </template>
-
- // 第一种直接使用ref,比较麻烦
- setup() {
- let supNum = ref(0),
- oppNum = ref(0);
- functiom change(x){
- x == 0? supNum.value++:oppNum.value++
- }
- return{
- supNum,
- oppNum,
- change,
- }
- }
-
- // 第二种ref,创建一个ref对象
- setup(){
- let state = ref({
- supNum:0
- oppNum:0
- })
- function change(x){
- x == 0? state.value.supNum++ : state.value.oppNum++
- }
- return{
- state
- }
- //html在使用的时候,{{state.supNum}}
- }
- 复制代码
- setup() {
- let state = reactive({
- supNum: 0,
- oppNum; 0
- })
- function change(x){
- x == 0? state.supNum++ : state.oppNum++
- // 比Object.defineProperty好用在于,对与数据或者并未初始化的对象成员,都可以随意的改变值,而且具备响应式的数据。
- }
- return{
- ...toRefs(state),
- change
- }
- //html在使用的时候,{{supNum}}
- }
- 复制代码
- <template>
- <div>
- <div ref="root">你好</div>
- </div>
- </template>
- export default {
- setup(){
- let root = ref();
- onMounted(()={
- console.log(root.value) //返回值是div元素
- })
- return{
- root
- }
- }
- }
- 复制代码
作者:前端黄柠檬
链接:http://www.qianduanheidong.com/blog/article/116107/a4a8a7c2732829de2956/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!