// 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])
}
破案了 我拿到新数据后将旧数据修改了,旧数据和新数据一样了,cloneDeep也没用,在组件里不会触发effect,在model里可以触发
测试代码