V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ooo4  ›  全部回复第 3 页 / 共 7 页
回复总数  138
1  2  3  4  5  6  7  
316 天前
回复了 ooo4 创建的主题 React 请教一个关于 useEffect 依赖的问题
@wiluxy 感谢
316 天前
回复了 ooo4 创建的主题 React 请教一个关于 useEffect 依赖的问题
@wgbx 不加这个 currentChatId 能满足我的功能,但 eslint 会抛出警告,加了又不满足我的功能了,react 太难了。
316 天前
回复了 ooo4 创建的主题 React 请教一个关于 useEffect 依赖的问题
@MossFox thanks ,我明天试试,顺便在看看文档
316 天前
回复了 ooo4 创建的主题 React 请教一个关于 useEffect 依赖的问题
@darkengine 就是在/bar/foo 下的这个 page.tsx 更新了一个状态 currentChatTitle ,然后在/bar 下的 page.tsx 要触发 currentChatTitle 的副作用,再更新额外的状态
github 建个仓库
324 天前
回复了 ooo4 创建的主题 职场话题 今年这环境怎么更难找工作(前端)了?
@94qihang 自己平时也在学习和了解各种技术,但做出来的基本都是玩具项目,去年也在卷 vue 源码,混了 10 几个 pr
324 天前
回复了 ooo4 创建的主题 职场话题 今年这环境怎么更难找工作(前端)了?
@Chism boss 直聘,大部分都是已读不会,要不就是说等部门筛选
324 天前
回复了 ooo4 创建的主题 职场话题 今年这环境怎么更难找工作(前端)了?
@94qihang 这大佬太顶了
324 天前
回复了 ooo4 创建的主题 职场话题 今年这环境怎么更难找工作(前端)了?
打错字了。。全年-->去年
324 天前
回复了 neetz 创建的主题 职场话题 今年公司不发年终奖,心态有点崩
三年了就发了 4000 的年终奖。。
325 天前
回复了 c2ch 创建的主题 电影 你们都几刷哪吒 2?这票房太猛了。。
用老婆免费电影票看的
347 天前
回复了 ooo4 创建的主题 成都 感觉房子卖不出去了。
@kaylabrady07736 什么家庭?
351 天前
回复了 ooo4 创建的主题 成都 感觉房子卖不出去了。
@qwertyzzz 这个应该不行
351 天前
回复了 nightnotlate 创建的主题 生活 楼上噪音续
现在卖出去没有
353 天前
回复了 ooo4 创建的主题 成都 感觉房子卖不出去了。
看来只有将就住了。
362 天前
回复了 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)
})
```
1  2  3  4  5  6  7  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2528 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 11:20 · PVG 19:20 · LAX 03:20 · JFK 06:20
♥ Do have faith in what you're doing.