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

// 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])
}
阅读 703
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题