ant-design / ant-design-mobile

Essential UI blocks for building mobile web apps.
https://mobile.ant.design
MIT License
11.64k stars 2.4k forks source link

Modal的几个指令式方法,如果不传入对应的Text,按钮上的文字只能显示默认值,而不是多语言 #6394

Closed legolasNg closed 1 year ago

legolasNg commented 1 year ago

Version of antd-mobile

5.23.4

Operating system and its version

iOS, Android

Browser and its version

IOS

Sandbox to reproduce

No response

What happened?

不知道这个是bug,还是原本就希望调用者传入对应的confirmText。我看了下源码,在mergerProps之前获取的是 getDefaultConfiglocale属性,而不是useConfig返回的locale属性

Relevant log output

No response

IronKinoko commented 1 year ago

https://github.com/ant-design/ant-design-mobile/blob/9c994eb19a81a5ea0087da199d862ee185231513/src/components/config-provider/config-provider.tsx#L46-L48

指令方法生成的节点不在原先的树中,获取不到 ConfigProvider 上下文,可以通过设置默认值解决这个问题。

import { ConfigProvider, setDefaultConfig } from 'antd-mobile'
import enUS from 'antd-mobile/es/locales/en-US'

setDefaultConfig({ locale: enUS }) // 设置默认的语言

const rootElement = document.getElementById('root')
render(
  <ConfigProvider locale={enUS}>
    <App />
  </ConfigProvider>,
  rootElement,
)
legolasNg commented 1 year ago

明白了,谢谢解答。

https://github.com/ant-design/ant-design-mobile/blob/9c994eb19a81a5ea0087da199d862ee185231513/src/components/config-provider/config-provider.tsx#L46-L48

指令方法生成的节点不在原先的树中,获取不到 ConfigProvider 上下文,可以通过设置默认值解决这个问题。

import { ConfigProvider, setDefaultConfig } from 'antd-mobile'
import enUS from 'antd-mobile/es/locales/en-US'

setDefaultConfig({ locale: enUS }) // 设置默认的语言

const rootElement = document.getElementById('root')
render(
  <ConfigProvider locale={enUS}>
    <App />
  </ConfigProvider>,
  rootElement,
)