我有一個react-native專案,在該專案中,我試圖以Switch一種可以動態設定object具有boolean及其值的方式來處理組件,但是我沒有很好地回應:
最初我useEffect用來處理資料:
useEffect(() => {
let lista = {}
Object.entries(planes).forEach(([j, plan]) => {
lista[plan.nombre] = false
})
setSeleccion(lista)
}, []);
然后我遍歷我的資料以加載它并使用以下命令動態創建“卡片” Switch:
<Switch
offTrackColor="indigo.100"
onTrackColor="indigo.300"
onThumbColor="coolgray.500"
offThumbColor="indigo.50"
size="lg"
onToggle={(val) => toggleSwitch(val, plan.nombre)}
value={seleccion[plan.nombre]}
/>
然后切換功能:
const toggleSwitch = (val, plan) => {
setSeleccion({...seleccion, [plan]: val})
};
現在,如果我列印新的,array它會按預期顯示:
useEffect(() => {
console.log(seleccion)
}, [seleccion]);
但遺憾的Switch是,false視覺上仍然存在(只是回到它的錯誤狀態,所以不能切換回關閉/錯誤)。
如果我toString(seleccion[plan.nombre])在渲染中做一個它會顯示[object Undefined]
uj5u.com熱心網友回復:
假設Switch您使用的是 same/from react-native。不應該有一個叫托onToggle在Switch像你下面寫道。
<Switch
offTrackColor="indigo.100"
onTrackColor="indigo.300"
onThumbColor="coolgray.500"
offThumbColor="indigo.50"
size="lg"
onToggle={(val) => toggleSwitch(val, plan.nombre)}
value={seleccion[plan.nombre]}
/>
相反,您需要使用 onValueChange
<Switch
offTrackColor="indigo.100"
onTrackColor="indigo.300"
onThumbColor="coolgray.500"
offThumbColor="indigo.50"
size="lg"
onValueChange={(val) => toggleSwitch(val, plan.nombre)}
value={seleccion[plan.nombre]}
/>
你可以props在這里閱讀更多關于Switch
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/363051.html
標籤:反应原生
