世博会 SecureStore getItem
Expo SecureStore getItem
我下面的代码不会 运行 if 语句,只有 else。
SecureStore.getItemAsync('notFirstLaunch').then((value) => {
LaunchApp(value);
});
const LaunchApp = function (value) {
console.log(value);
if (value === "true") {
return (
<SafeAreaView forceInset={{ bottom: 0 }} style={{ flex: 1, backgroundColor: '#E65100' }}>
<Main />
</SafeAreaView>
);
}
else {
SecureStore.setItemAsync('notFirstLaunch', "true");
return (
<Walkthrough />
);
}
};
我的 console.log returns value = true 但我的 if 语句从来没有 运行 只有 else,请帮忙!
我认为 .then
块中的代码存在问题。我无法确定,但在我看来 return 语句不会影响渲染。
如果我打算做你正在做的事情,这就是我重构你的组件的方式。显然,您将更改每个用例的 returned,而不是我输入的简单视图。
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
notFirstLaunch: false
}
}
componentDidMount() {
this.firstLaunchCheck();
}
firstLaunchCheck = () => {
SecureStore.getItemAsync('notFirstLaunch').then(value => {
if (value !== 'true') {
SecureStore.setItemAsync('notFirstLaunch', 'true');
}
this.setState({notFirstLaunch: value === 'true'})
});
}
render() {
if (this.state.notFirstLaunch) {
return (
<View style={styles.container}>
<Text>Main</Text>
</View>
);
} else {
return (
<View style={styles.container}>
<Text>Walkthrough</Text>
</View>
);
}
}
}
当组件安装时我调用 firstLaunchCheck
如果存储在 SecureStore
中的值等于 "true" 如果它是第一次启动它然后更新 notFirstLaunch 变量的状态它还在 SecureStore
中设置值。状态的变化导致重新渲染,然后显示正确的视图。
您需要在文件中导入以下行:
从 'expo-secure-store';
导入 * 作为 SecureStore
我下面的代码不会 运行 if 语句,只有 else。
SecureStore.getItemAsync('notFirstLaunch').then((value) => {
LaunchApp(value);
});
const LaunchApp = function (value) {
console.log(value);
if (value === "true") {
return (
<SafeAreaView forceInset={{ bottom: 0 }} style={{ flex: 1, backgroundColor: '#E65100' }}>
<Main />
</SafeAreaView>
);
}
else {
SecureStore.setItemAsync('notFirstLaunch', "true");
return (
<Walkthrough />
);
}
};
我的 console.log returns value = true 但我的 if 语句从来没有 运行 只有 else,请帮忙!
我认为 .then
块中的代码存在问题。我无法确定,但在我看来 return 语句不会影响渲染。
如果我打算做你正在做的事情,这就是我重构你的组件的方式。显然,您将更改每个用例的 returned,而不是我输入的简单视图。
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
notFirstLaunch: false
}
}
componentDidMount() {
this.firstLaunchCheck();
}
firstLaunchCheck = () => {
SecureStore.getItemAsync('notFirstLaunch').then(value => {
if (value !== 'true') {
SecureStore.setItemAsync('notFirstLaunch', 'true');
}
this.setState({notFirstLaunch: value === 'true'})
});
}
render() {
if (this.state.notFirstLaunch) {
return (
<View style={styles.container}>
<Text>Main</Text>
</View>
);
} else {
return (
<View style={styles.container}>
<Text>Walkthrough</Text>
</View>
);
}
}
}
当组件安装时我调用 firstLaunchCheck
如果存储在 SecureStore
中的值等于 "true" 如果它是第一次启动它然后更新 notFirstLaunch 变量的状态它还在 SecureStore
中设置值。状态的变化导致重新渲染,然后显示正确的视图。
您需要在文件中导入以下行: 从 'expo-secure-store';
导入 * 作为 SecureStore