问题描述
function CategoryCard (props) {
const [done,setDone] = React.useState(null);
let check;
React.useEffect(() => {
async function checkData() {
check = await getData(props.path);
// prints CORRECTLY
console.log(check);
}
checkData();
//prints INCORRECTLY
console.log(check);
setDone(true);
},[]);
return (
<View>
{done ? (
<Text>{check}</Text>
):(
<View style={[styles.container,styles.horizontal]}>
<ActivityIndicator size="large" color="#99ff99" />
</View>
)}
</View>
);
}
如何在react-native中将值从异步函数转换为常规函数?
在上面的代码中,第一个console.log输出期望值,但是第二个console.log输出未定义值,好像异步函数对变量检查没有任何影响。
我需要来自getData(props.path)
的check值才能在<Text>
组件中显示它。
有什么想法吗?
解决方法
将其置于状态中。
function CategoryCard (props) {
const [check,setCheck] = React.useState(null);
React.useEffect(() => {
async function checkData() {
const data = await getData(props.path);
setCheck(data);
}
checkData();
},[]);
return (
<View>
{check ? (
<Text>{check}</Text>
):(
<View style={[styles.container,styles.horizontal]}>
<ActivityIndicator size="large" color="#99ff99" />
</View>
)}
</View>
);
}