reactjs - React Native 博览会。较早创建变量并稍后使用它
问题描述
我正在使用 react native expo 创建移动应用程序。我想事先创建一个变量,然后再使用它。请参阅下面的注释代码。我在下面的关键行添加了评论:-
export default function bar () {
let result; // create variable early
// ...
const pick = async () => {
result = await ImagePicker.launchImageLibraryAsync({ // use variable later
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsEditing: true,
quality: 1,
});
}
pick();
return (
<Image source={{ uri: result.uri }} /> // Use later
);
}
pick();
但是我的应用程序在它再次开始构建时崩溃了。为什么我的应用程序崩溃pick();
?result
我相信我对变量做错了什么?
注意:我不想使用钩子。我不想使用像useEffect
或这样的钩子useState
解决方案
试试这个方法
export default function bar() {
let result; // create variable early
// ...
const pick = async () => {
result = await ImagePicker.launchImageLibraryAsync({
// use variable later
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsEditing: true,
quality: 1,
});
};
// Similar to componentDidMount and componentDidUpdate:
useEffect(() => {
pick();
});
return result ? <Image source={{ uri: result.uri }} /> : null;
}
推荐阅读
- iis - 如何从受 Keycloak Gatekeeper 保护的站点设置 REMOTE_USER 变量
- r - 如何从 R 调用 Fortran 程序
- java - Java 连接到 oracle 数据库需要很长时间
- css - 有没有办法让 calc 函数与 Sass 中的 * 运算符一起工作?
- python - Django如何显示用户输入的值
- java - 带有 Mongodb 的 log4j2 问题日志记录可抛出消息
- python-3.x - 使用石墨烯,与客户端发送graphql请求时,如何拦截+内省post数据?
- python - 如何在python中进行没有堆栈溢出的递归?
- python - 如何解决以下错误 - TypeError: unsupported operand type(s) for -: 'int' and 'str'
- discord.py - 将用户名设置为参数