MattTheTekie

Vue3踩坑经历

ref

setup()中,如果你声明了一个ref变量

setup() {
  const activeId = ref(0)
}

除了重新赋值需要加上.value,其他取值的情况下也要加上.value

const activeId = ref(1)
const list = [{ name: 'jack' }]

// 正常赋值
activeId.value = 0

// 以下错误的取值方式
// console.log(list[activeId])

// 正确方式
console.log(list[activeId.value]) // { name: 'jack' }

如果你在reactive中也赋值了ref,那么在取值的时候,也要使用.value

reactive

正常使用,我们一般用对象

const book = reactive({
  author: 'jack'
})

但有时候我们要用数组

const books = reactive([{
  author: 'jack'
}])

响应式不能直接赋值,如果是对象,我们得修改字段,或者使用Object.assign

// 方法一
book.author = "jojo"
//方法二
Object.assign(book, {author: 'jojo'})

修改数组的话,同样得修改原始数据的,比如splice, push等方法

// 方法一
books[0] = {author: "jojo"}
// 方法二
books.push({ author: 'jojo' })
// 方法三
books.splice(0, 1)

最后

setup目前刚用起来感觉有点怪怪的不是很习惯,可能因为用惯了普通写法和React Hooks导致的不习惯,多用用或许会习惯吧