React native 使用条件呈现反应本机useState字符串
我正试图以与useState相同的方式执行if语句,但它失败了 我有这些价值观React native 使用条件呈现反应本机useState字符串,react-native,jsx,React Native,Jsx,我正试图以与useState相同的方式执行if语句,但它失败了 我有这些价值观 let [L01, setL01] = useState(''); let [L02, setL02] = useState(''); let [level01, setlevel01] = useState(false); let [level01_Open, setlevel01_Open] = useState(false); let [level01_img, setlevel01_img] = useSt
let [L01, setL01] = useState('');
let [L02, setL02] = useState('');
let [level01, setlevel01] = useState(false);
let [level01_Open, setlevel01_Open] = useState(false);
let [level01_img, setlevel01_img] = useState(false);
let [locked_level01, setlocked_level01] = useState(false);
let [level02, setlevel02] = useState(false);
let [level02_Open, setlevel02_Open] = useState(false);
let [level02_img, setlevel02_img] = useState(false);
let [locked_level02, setlocked_level02] = useState(false);
然后L01设置为“是”,而L02设置为“否”
然后,我尝试基于该数据运行if语句,但是它将L01识别为Yes,但是它无法将if statmenet中的值设置为true
if ( L01 == 'Yes') {
setlevel01(true)
setlevel02_Open(true)
setlevel01_img(true)
} else {
setlevel01(false)
setlevel02_Open(false)
setlevel01_img(false)
}
if ( L02 == 'Yes') {
setlevel02(true)
setlevel01_img(false)
setlevel02_img(true)
} else {
setlevel02(true)
setlevel02_img(false)
}
您需要使用
useffect
设置效果挂钩,以查看L01
和L02
的更改:
useffect(()=>{
//当L01或L02更改时,在此处定义任何登录和状态更新
const L01Flag=L01==‘是’;
setlevel01(L01标志);
setlevel02_打开(L01标志);
setlevel01_img(L01标志);
const L02Flag=L02==‘是’;
setlevel02(L02标志);
setlevel01_打开(L02标志);
setlevel02_img(l02标志);
}[L01,L02]);
啊!非常感谢。你回答中帮助我的实际部分是,我需要一个完全独立的useEffect,因为我有一个最初设置数据的useEffect。问题是。为什么需要我在useEffect末尾创建一个数组?由于我在第一次使用效果时没有这样做,这有什么好处呢?useffect
末尾的数组实际上告诉useffect
何时执行。在这种情况下,useffect
仅当L01
或L02
中的一个发生更改时才会执行。如果您从数据库中提取数据以将L01或L02设置为是或否,并且由于React Natives命令,您必须在useffect之后提取该数据,该怎么办?因为在我的第一个UseEffect中,如果我在数组创建错误后包含数组,说它无法读取属性,因为数据不在那里,我会这样做。你必须设置一个UseEffect
hook来提取数据。当你将一个空数组传递到useffect
的末尾时,这个钩子只运行一次,然后就像类组件中的componentdidMount
一样,你可以在其中加载DB数据,然后更新状态。啊,这很有意义,如果我这样做的话:让[data,setData]=useState(useQuery(GetLevelsQuery));如何解构数据返回以设置变量L01和L02?