【发布时间】:2020-08-10 00:38:23
【问题描述】:
我在一个组件中有多个开关(大约 40 到 70 个),具体取决于从数据库中获取的行数。我正在用平面列表中的每一行渲染每个开关(每个项目都分配有一个 ID)。最后,我想提交所有值并将它们与 id 及其各自的开关状态(true / false)一起存储在数据库中。
我想像 HTML 中的表单一样,在提交表单后获取表单的所有值。
这是渲染 flatlist 的组件。我删除了不必要的代码,因为我能够在没有任何错误和警告的情况下显示平面列表。
const [stData, setStData] = useState([]);
useEffect(()=> {
// Here I am fetching data from server using axios
// setStData(fetchedData);
})
<View>
<FlatList
data={stData}
keyExtractor={(item) => item.registration_id}
renderItem={(stData) => (
<ListItem
name={stData.item.name}
registrationNo={stData.item.registration_id}
data={stData}
isPresent={stData.item.isPresent}
setData={setStData}
/>
)}
/>
这是 ListItem 组件
<View>
<View>
<Text>{props.name}</Text>
<Text>{props.id}</Text>
</View>
<Switch
trackColor={{ true: "red" }}
thumbColor={"white"}
onValueChange={() =>
props.setData(
props.data.map((item) =>
item.registration_id === props.registrationNo
? { ...item, isPresent: !props.isPresent }
: item
)
)
}
value={props.isPresent}
/>
</View>
更新 现在,每当我尝试切换开关按钮时,都会发生 TypeError: undefined is not a function (near '...props.data.map...')。
【问题讨论】:
标签: javascript react-native react-native-flatlist