我使用expo,因此无法访问android文件夹。
我想第一次重新启动我的应用程序。我该怎么办?
我使用react-native-restart,但没有扭动,现在出现错误:
null不是对象(正在评估'x.default.restart;)
代码:
componentDidMount() {
if (I18nManager.isRTL) {
I18nManager.forceRTL(false);
RNRestart.Restart();
}
}
如何重新启动我的应用?
答案 0 :(得分:8)
我也遇到了同样的问题,并在某处找到了解决方案。
您可以尝试像这样从0 * * * * /bin/sh -c "yes | /foo/bar/my_command"
使用Updates
:
expo
答案 1 :(得分:3)
一个月来我遇到了同样的问题,没有任何帮助,所以我开发了一个库来完成此任务,只需使用以下命令即可安装它:
npm i fiction-expo-restart
并将其导入为:
import {Restart} from 'fiction-expo-restart';
,然后当您想要重新启动时,使用:
Restart();
请注意,如果这个答案变旧了,您可以在这里检查库:https://www.npmjs.com/package/fiction-expo-restart
答案 2 :(得分:0)
如果您正在使用react-native-code-push
库,则可以使用此库重新启动;
import CodePush from 'react-native-code-push';
CodePush.restartApp();
答案 3 :(得分:0)
import { StatusBar } from "expo-status-bar";
import React from "react";
import { Button, I18nManager, StyleSheet, Text, View } from "react-native";
import * as Updates from "expo-updates";
async function toggleRTL() {
await I18nManager.forceRTL(I18nManager.isRTL ? false : true);
await Updates.reloadAsync();
}
export default function App() {
return (
<View style={styles.container}>
<Text>{new Date().toString()}</Text>
<Text>{I18nManager.isRTL ? "RTL" : "LTR"}</Text>
<View style={{ marginVertical: 5 }} />
<Button title="Reload app" onPress={() => Updates.reloadAsync()} />
<View style={{ marginVertical: 5 }} />
<Button title="Toggle RTL" onPress={() => toggleRTL()} />
<StatusBar style="auto" />
</View>
);
}
https://github.com/brentvatne/updates-reload/blob/master/App.js 对我来说,这是唯一的工作方式。当我尝试在useEffect中自动重新加载应用程序时-它崩溃了,所以我在一个单独的屏幕上要求用户按按钮重新加载应用程序