我用useModel 有个useState数据更新了 为什么在组件里面useEffect监听不到?

作者站长头像
站长
· 阅读数 5
// socket.ts 这是一个model
export default function Socket() {
    const [data, setData] = useState()

    ... // 执行了setData(cloneDeep(新数据))

    return { data }
}
// Monitor.ts 这是组件
import { useModel } from 'umi'
...

export default function Monitor() {
    const { data } = useModel('socket', (model) => ({data: model.data}))

    console.log(data) // 这里输出了

    useEffect(() => {
        console.log(data) // 但是这里没输出
    }, [data])
}
回复
1个回答
avatar
test
2024-06-25

破案了 我拿到新数据后将旧数据修改了,旧数据和新数据一样了,cloneDeep也没用,在组件里不会触发effect,在model里可以触发测试代码

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容