V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ooo4  ›  全部回复第 3 页 / 共 7 页
回复总数  132
1  2  3  4  5  6  7  
255 天前
回复了 ooo4 创建的主题 职场话题 今年这环境怎么更难找工作(前端)了?
@94qihang 自己平时也在学习和了解各种技术,但做出来的基本都是玩具项目,去年也在卷 vue 源码,混了 10 几个 pr
255 天前
回复了 ooo4 创建的主题 职场话题 今年这环境怎么更难找工作(前端)了?
@Chism boss 直聘,大部分都是已读不会,要不就是说等部门筛选
255 天前
回复了 ooo4 创建的主题 职场话题 今年这环境怎么更难找工作(前端)了?
@94qihang 这大佬太顶了
255 天前
回复了 ooo4 创建的主题 职场话题 今年这环境怎么更难找工作(前端)了?
打错字了。。全年-->去年
255 天前
回复了 neetz 创建的主题 职场话题 今年公司不发年终奖,心态有点崩
三年了就发了 4000 的年终奖。。
256 天前
回复了 c2ch 创建的主题 电影 你们都几刷哪吒 2?这票房太猛了。。
用老婆免费电影票看的
278 天前
回复了 ooo4 创建的主题 成都 感觉房子卖不出去了。
@kaylabrady07736 什么家庭?
282 天前
回复了 ooo4 创建的主题 成都 感觉房子卖不出去了。
@qwertyzzz 这个应该不行
282 天前
回复了 nightnotlate 创建的主题 生活 楼上噪音续
现在卖出去没有
284 天前
回复了 ooo4 创建的主题 成都 感觉房子卖不出去了。
看来只有将就住了。
293 天前
回复了 imba97 创建的主题 程序员 关于今天给前端返回数据的结构的争论
以前我也觉得后端返回的数据结构应该保持一致,直到后面被安排到其他项目组,里面的后端都是公司呆了 10 多年那种,接口写的十分的丑陋,什么拼音啊,额外字段用什么 xxx1 ,xxxx2 ,xxxx3 前端根本用不上,虽然代码很恶心,但管他的,说不定明年你就跑路了
@zhengfan2016 因为 setup 函数不是副作用,所以不会重新执行,那么 toRefs 的数据在没有其他副作用的情况下,是不会改变的
如果保持你的代码,那么只能改渲染函数了,让他尽量的像 react
```
// Comp.js 不是 sfc
import { watchEffect, onMounted, toRefs, ref } from 'vue';

export default {
setup() {
let data = ref()
onMounted(() => {
setTimeout(() => {
data.value = { code: 0, data: [666, 777, 888] }
}, 1000)
})

return () => {
// 渲染函数 这是副作用,当响应式数据改变了,就会重新执行
const { data: list } = toRefs(data.value) || {}
watchEffect(() => {
console.log('list', list?.value)
})
// jsx
return 1
}
}
}
```
toRefs 的参数必须是一个对象才行,而且必须还要存在属性,因为它要把对应的属性值变成 ref 。
而现在使用的是 ref 包裹数据,那么也应该是`const {data:list} = toRefs(data.value)`才行,让 list 变成了响应式数据,
但是是通过`data.value = { code: 0, data: [666, 777, 888] }`改变数据,也只是改变了 data(ref),list 并没有改变,所以 list 还是以前的数据,如果这样`Object.assign(data.value, { code: 0, data: [666, 777, 888] })`修改数据应该可以

看错了 [如果对 ref 包装的 obj 进行解构]
```
import { reactive, watchEffect, onMounted, toRefs, ref } from 'vue';
const data = ref({ code: null, data: [] })
onMounted(() => {
setTimeout(() => {
Object.assign(data.value, { code: 0, data: [666, 777, 888] })
}, 1000)
})

debugger
const { data: list } = toRefs(data.value)
watchEffect(() => {
console.log('list', list.value)
})
```
@ooo4
不需要这么麻烦
```
import { reactive, watchEffect, onMounted, toRefs } from 'vue';
const data = reactive({ code: null, data: [] })
onMounted(() => {
setTimeout(() => {
Object.assign(data, { code: 0, data: [666, 777, 888] })
}, 1000)
})


const { data: list } = toRefs(data)
watchEffect(() => {
console.log('list', list.value.length)
})
```
试试这个

const data = reactive({ code: null, data: [] })
onMounted(() => {
setTimeout(() => {
Object.assign(data, { code: 0, data: [666, 777, 888] })
}, 1000)
})

function useFoo(state) {
const res = {}
watchEffect(() => {
for (let key in state) {
res[key] = toRef(state, key)
}
})
return res
}

const { data: list } = useFoo(data)

watchEffect(() => {
console.log('data', data)
console.log('list', list)
})
@zhengfan2016 因为我在调试 react 源码,不想通过合成事件去触发,徒增额外调试
@shintendo 从 chrome 的 debugger 工具看,这个 props 确实是来源于闭包,thanks!!
@maclanelf134 那不至于,主要是嫌弃公司的垃圾项目,不想维护
@Liam1997 项目没写过,但 react 的官网看过几次,可以用一个很简单的 demo 打断点一步一步的调试,再看看那些大佬总结的笔记,调试过十几次自然就看的进去了,不过也就简单了解下核心流程
@tog vue 技术栈,但公司的 vue2 老项目太恶心了基本改不动,为什么突然想换了,因为想涨工资了
1  2  3  4  5  6  7  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2685 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 11:50 · PVG 19:50 · LAX 04:50 · JFK 07:50
♥ Do have faith in what you're doing.