Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(config-provider): computed globalConfig reactivity #4612

Merged
merged 1 commit into from
Sep 27, 2024

Conversation

aolyang
Copy link
Contributor

@aolyang aolyang commented Sep 26, 2024

<script>
const globalConfig = computed(() => {
    return locale.value === "zh-CN" ? zhCN : enUS
})
</script>
<template>
  <TConfigProvider :globalConfig="globalConfig">
      <TAlert :max-line="2">
          <-- ... !-->
      </TAlert>
  </TConfigProvider>
</template>

devtools查看 config-provider 中的globalConfig是具备响应式的
本地组件手动inject也是可以的,但是 TAlert 中的不会变
最终定位是computed返回的对象保持了引用:

const defaultData = cloneDeep(defaultGlobalConfig);
const mergedGlobalConfig = computed(() =>
mergeWith(defaultData as unknown as GlobalConfigProvider, props.globalConfig),
);
provide(configProviderInjectKey, mergedGlobalConfig);

参考useConfig 本地node_modules手动修改测试可行:

-mergeWith(defaultData as unknown as GlobalConfigProvider, props.globalConfig),
+Object.assign({}, mergeWith(defaultData as unknown as GlobalConfigProvider, props.globalConfig)),

🤔 这个 PR 的性质是?

  • 日常 bug 修复

🔗 相关 Issue

#4611
#3854

📝 更新日志

  • fix(ConfigProvider): 修复全局配置丢失响应式问题

☑️ 请求合并前的自查清单

⚠️ 请自检并全部勾选全部选项⚠️

  • 文档无须补充
  • 代码演示无须提供
  • TypeScript 定义无须补充
  • Changelog 已提供或无须提供

Copy link
Contributor

完成

@uyarn uyarn merged commit 77592da into Tencent:develop Sep 27, 2024
6 checks passed
@github-actions github-actions bot mentioned this pull request Sep 27, 2024
16 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants