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