【发布时间】:2021-08-17 13:02:51
【问题描述】:
我对应用程序编程很陌生,所以如果我的问题太基本,请见谅。
形成 ionic-react 中的多项选择功能,我能够提取用户选择的值。但是当用户返回去选择更多的值时,之前选择的值就会消失。
我怎样才能使以前的选择到位?
我提供了一个来自 Ionic 文档的示例。
import React, { useState } from 'react';
import { IonContent, IonItem, IonLabel, IonList, IonListHeader, IonSelect, IonSelectOption, IonPage, IonItemDivider } from '@ionic/react';
const users = [
{
id: 1,
first: 'Alice',
last: 'Smith'
},
{
id: 2,
first: 'Bob',
last: 'Davis'
},
{
id: 3,
first: 'Charlie',
last: 'Rosenburg',
}
];
type User = typeof users[number];
const compareWith = (o1: User, o2: User) => {
return o1 && o2 ? o1.id === o2.id : o1 === o2;
};
export const ObjectSelection: React.FC = () => {
const [selectedUsers, setSelectedUsers] = useState<User[]>([]);
return (
<IonPage>
<IonContent>
<IonList>
<IonListHeader>
<IonLabel>
Objects as Values (compareWith)
</IonLabel>
</IonListHeader>
<IonItem>
<IonLabel>Users</IonLabel>
<IonSelect compareWith={compareWith} value={selectedUsers} multiple onIonChange={e => setSelectedUsers(e.detail.value)}>
{users.map(user => (
<IonSelectOption key={user.id} value={user}>
{user.first} {user.last}
</IonSelectOption>
))}
</IonSelect>
</IonItem>
<IonItemDivider>Selected Users</IonItemDivider>
{selectedUsers.length ?
selectedUsers.map(user => <IonItem key={user.id}>{user.first} {user.last}</IonItem>) :
<IonItem>(none selected)</IonItem>
}
</IonList>
</IonContent>
</IonPage>
);
};
【问题讨论】: