如何截取对象内的locale值并正确传递给getLanguage方法作为入参
问题根源
你的getLanguage方法通过对象解构接收参数,只会读取传入对象中key为locale的字段,你之前的写法有问题:
- 写
{ sliced }是ES6对象属性简写,等价于{ sliced: 截取后的值 },传入对象里根本没有locale字段,方法读取自然为undefined - 如果你确实写了
locale: sliced还是出现undefined,优先检查上游传入的locale本身是否为undefined、空值,调用slice前没有做校验导致报错中断了逻辑
正确实现
async ({ locale }, ctx) => { // 增加边界校验,避免无locale时调用slice报错 if (!locale) { // 可根据业务需求调整缺省逻辑,比如抛错或返回默认排版方向 return 'ltr' } // 截取前两位,兼容下划线/横杠分隔的locale格式可以改用split:locale.split(/[-_]/)[0] const shortLocale = locale.slice(0, 2) const lang = await LanguageService(ctx).getLanguage({ locale: shortLocale }) return lang.direction ? 'rtl' : 'ltr' },
内容的提问来源于stack exchange,提问作者Jakub
相关产品推荐
相关产品推荐

