【发布时间】:2022-01-16 12:53:36
【问题描述】:
我目前正在尝试在显示之前使用 if 语句将不同的对象分配给 let 变量。出于某种原因,在函数中分配对象将导致变量不显示任何内容,而不是显示分配的对象。
我举个例子:
在下面的代码中,我根据我从另一个文件传递的 prop 将 2 个不同的图标分配给 let 变量,结果与我正在寻找的完全匹配。
const BottomBar = ({ screen }) => {
let icon;
if (screen === 'Home') {
icon = (<Entypo name='home' size={30} color='white'/>);
} else {
icon = (<SimpleLineIcons name='home' size={24} color='white'/>);
}
return (
<View>{icon}</View>
);
}
但是,如果我要重新尝试将函数与 useEffect 挂钩组合使用相同的示例,则 {icon} 对象不会显示任何内容。
const BottomBar = ({ screen }) => {
let icon;
const checkScreen = () => {
if (screen === 'Home') {
icon = (<Entypo name='home' size={30} color='white'/>);
} else {
icon = (<SimpleLineIcons name='home' size={24} color='white'/>);
}
};
useEffect(() => {
checkScreen();
});
return (
<View>{icon}</View>
);
}
马上,我可以假设这是因为函数是异步的。在将其分配给对象之前,正在使用 let 变量“icon”。所以一个简单的修复方法如下:
const BottomBar = ({ screen }) => {
const checkScreen = () => {
if (screen === 'Home') {
return (<Entypo name='home' size={30} color='white'/>);
} else {
return (<SimpleLineIcons name='home' size={24} color='white'/>);
}
};
let icon = checkScreen();
return (
<View>{icon}</View>
);
}
但是,如果我想稍后在按下按钮后用不同的对象重新分配变量图标怎么办。简单地立即分配一个对象不允许我稍后重新分配它。我想做的是根据需要分配对象。我错过了什么?我是错误地传递了变量还是这根本不可能?
【问题讨论】:
标签: javascript android reactjs react-native