当前位置: 首页 > 知识库问答 >
问题:

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

董胡媚
2023-11-08
// socket.ts 这是一个modelexport 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个答案

井礼骞
2023-11-08

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

 类似资料:
  • 我不熟悉React钩子和React 16.13.1。 我将实现能够处理登录的Auth组件。 但是它似乎没有正确更新状态,即使使用响应对象调用。 这个代码有什么问题?

  • watch监听里面使用foreach就陷入死循环,为什么? 我想过滤掉type != 2的数据,不用在表格渲染出来

  • 问题内容: 我这里有一些简单的代码 每次单击按钮,控制台上都会显示2条日志,指示该组件呈现两次。 这是一个codeandbox链接,可以尝试一下。 问题答案: 呈现您的App组件的原因是在其中导致代码在严格模式下运行,并且在严格模式下,控制台显示两次,因为每个功能在开发模式下均运行两次 根据react docs: 严格模式无法自动为您检测副作用,但可以通过使其更具确定性来帮助您发现它们。这是通过有

  • console.log(allDict);这句打印出来有值,为什么里面的值是undefined?

  • 我是React native和firestore的初学者,使用它们来构建一种社交媒体应用程序,我有一个奇怪的问题(我认为我构建数据库的方式不对)。我想有一个feed,所有的帖子,没有追随者,没有任何东西。我第一次在db中构建帖子时是这样的:用户(集合)- 所以我像这样重新构建了数据库:2个主集合、帖子和用户。完全不同。在用户集合中,只有用户及其数据的文档(姓名、年龄等)。在另一个中,他们的帖子(姓

  • 你可能注意到这种事件监听的方式违背了关注点分离 (separation of concern) 这个长期以来的优良传统。但不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑定在当前视图的 ViewModel 上,它不会导致任何维护上的困难。实际上,使用v-on有几个好处: 扫一眼 HTML 模板便能轻松定位在 JavaScript 代码里对应的方法。 因为你无须在 JavaScrip