我正在尝试找到在 React Native Expo 中在 ltr 和 rtl 视图之间切换的解决方案。我尝试过这个解决方案:
import * as Updates from "expo-updates";
import {
I18nManager,
} from "react-native";
// i18 is intialised object of i18next
const changeLanguage = (value) => {
i18n
.changeLanguage(value)
.then(() => {
setLanguage(value);
if (value === "ar") {
if (true && Platform.OS !== "web") {
I18nManager.allowRTL(true);
I18nManager.forceRTL(true);
Updates.reloadAsync();
}
} else {
I18nManager.allowRTL(false);
I18nManager.forceRTL(false);
Updates.reloadAsync();
}
})
.catch((err) => console.log(err));
};
但是
Updates.reloadAsync();
会导致错误:
错误:您无法在生产应用程序的开发模式下使用更新模块。要测试手动更新,请使用
发布您的项目,并在此开发客户端中打开已发布的版本。expo publish
所以 rtl 到 ltr 和 ltr 到 rtl 不起作用。
我也尝试过expopublish,然后ltr到rtl也不起作用。请给我一个解决方案。您能否为我提供重新加载应用程序的替代解决方案,或者如果我在代码中遵循了任何错误,请帮助我。
正如错误消息所示,您不能在开发中使用
Updates.reloadAsync()
;相反,您可以使用 DevSettings.reload()
重新加载应用程序。