Я создаю приложение и использую модальное окно Ionic, чтобы иметь возможность открыть представление для ввода информации. Я не использую форму реагирования. Я просто использую поля ввода, которые я проверяю и onSubmit. Я извлекаю данные из формы useState и передаю их родительскому элементу, который вызывает модальное окно, которое затем преобразует их в тип данных, который мне нужен для отображения информации. Я хочу иметь возможность использовать представление для редактирования существующей информации. Проводка немного сложна, и я новичок в реагировании и Ionic. Я мало что знаю о закономерностях, но знаю, что существуют стандарты, которым следует следовать при таком типе поведения. Я знаю, что самый простой путь — просто создать новое представление для редактирования, но цель реакции — повторное использование компонентов. ChatGPT полезен, но также сбивает меня с толку и заставляет теряться в деталях и отвлекаться от темы. Сначала Чат предложил разделить openModal на openCreate и OpenEdit, а также передать модальному модальному модулю переменную mode и InitialValue и соответствующим образом настроить поведение. Затем было предложено использовать небольшую оболочку, которая вызывает общий OpenModal с начальными значениями и вводит любые другие необходимые значения. Я чувствую, что оболочка усложняет ситуацию, поэтому я пытаюсь сделать первый. openEdit и createEdit немного сбивают с толку, поскольку логика на странице запутанна. Я просто немного растерялся, если иду в правильном направлении. У кого-нибудь есть какие-нибудь советы?
import {
IonButtons,
IonButton,
IonHeader,
IonContent,
IonToolbar,
IonTitle,
IonPage,
IonItem,
IonInput,
useIonModal,
} from '@ionic/react';
import { OverlayEventDetail } from '@ionic/core/components';
const ModalExample = ({ dismiss }: { dismiss: (data?: string | null | undefined | number, role?: string) => void }) => {
const inputRef = useRef(null);
return (
dismiss(null, 'cancel')}>
Cancel
Welcome
dismiss(inputRef.current?.value, 'confirm')} strong={true}>
Confirm
);
};
function Example() {
const [present, dismiss] = useIonModal(ModalExample, {
dismiss: (data: string, role: string) => dismiss(data, role),
});
const [message, setMessage] = useState('This modal example uses the modalController to present and dismiss modals.');
function openModal() {
present({
onWillDismiss: (event: CustomEvent) => {
if (event.detail.role === 'confirm') {
setMessage(`Hello, ${event.detail.data}!`);
}
},
});
}
return (
Controller Modal
openModal()}>
Open
{message}
);
}
export default Example;```
This is a snippet of what chat proposed for the first solution
``` const defaultForm: NewProjectForm = { name: "", totalHouses: 1, description: "" };
const [presentCreate, closeCreate] = useIonModal(ProjectFormModal, {
onDismiss: (d?: NewProjectForm | null, r?: string) => closeCreate(d, r),
mode: "create",
initialForm: defaultForm,
});
const currentFormRef = useRef(defaultForm);
const [presentEdit, closeEdit] = useIonModal(ProjectFormModal, {
onDismiss: (d?: NewProjectForm | null, r?: string) => closeEdit(d, r),
mode: "edit",
// pass a ref so each open uses the latest value
initialForm: currentFormRef.current,
baselineForm: currentFormRef.current,
});
function openCreate() {
presentCreate({ onWillDismiss: handleCreateDismiss });
}
function openEdit(project: ProjectCardProps) {
currentFormRef.current = projectToForm(project); // update ref first
presentEdit({ onWillDismiss: (e) => handleEditDismiss(project.id, e) });
}
```
Подробнее здесь: https://stackoverflow.com/questions/797 ... -framework
Лучший шаблон для создания и редактирования формы в React + Ionic Framework ⇐ Javascript
Форум по Javascript
1759950332
Anonymous
Я создаю приложение и использую модальное окно Ionic, чтобы иметь возможность открыть представление для ввода информации. Я не использую форму реагирования. Я просто использую поля ввода, которые я проверяю и onSubmit. Я извлекаю данные из формы useState и передаю их родительскому элементу, который вызывает модальное окно, которое затем преобразует их в тип данных, который мне нужен для отображения информации. Я хочу иметь возможность использовать представление для редактирования существующей информации. Проводка немного сложна, и я новичок в реагировании и Ionic. Я мало что знаю о закономерностях, но знаю, что существуют стандарты, которым следует следовать при таком типе поведения. Я знаю, что самый простой путь — просто создать новое представление для редактирования, но цель реакции — повторное использование компонентов. ChatGPT полезен, но также сбивает меня с толку и заставляет теряться в деталях и отвлекаться от темы. Сначала Чат предложил разделить openModal на openCreate и OpenEdit, а также передать модальному модальному модулю переменную mode и InitialValue и соответствующим образом настроить поведение. Затем было предложено использовать небольшую оболочку, которая вызывает общий OpenModal с начальными значениями и вводит любые другие необходимые значения. Я чувствую, что оболочка усложняет ситуацию, поэтому я пытаюсь сделать первый. openEdit и createEdit немного сбивают с толку, поскольку логика на странице запутанна. Я просто немного растерялся, если иду в правильном направлении. У кого-нибудь есть какие-нибудь советы?
import {
IonButtons,
IonButton,
IonHeader,
IonContent,
IonToolbar,
IonTitle,
IonPage,
IonItem,
IonInput,
useIonModal,
} from '@ionic/react';
import { OverlayEventDetail } from '@ionic/core/components';
const ModalExample = ({ dismiss }: { dismiss: (data?: string | null | undefined | number, role?: string) => void }) => {
const inputRef = useRef(null);
return (
dismiss(null, 'cancel')}>
Cancel
Welcome
dismiss(inputRef.current?.value, 'confirm')} strong={true}>
Confirm
);
};
function Example() {
const [present, dismiss] = useIonModal(ModalExample, {
dismiss: (data: string, role: string) => dismiss(data, role),
});
const [message, setMessage] = useState('This modal example uses the modalController to present and dismiss modals.');
function openModal() {
present({
onWillDismiss: (event: CustomEvent) => {
if (event.detail.role === 'confirm') {
setMessage(`Hello, ${event.detail.data}!`);
}
},
});
}
return (
Controller Modal
openModal()}>
Open
{message}
);
}
export default Example;```
This is a snippet of what chat proposed for the first solution
``` const defaultForm: NewProjectForm = { name: "", totalHouses: 1, description: "" };
const [presentCreate, closeCreate] = useIonModal(ProjectFormModal, {
onDismiss: (d?: NewProjectForm | null, r?: string) => closeCreate(d, r),
mode: "create",
initialForm: defaultForm,
});
const currentFormRef = useRef(defaultForm);
const [presentEdit, closeEdit] = useIonModal(ProjectFormModal, {
onDismiss: (d?: NewProjectForm | null, r?: string) => closeEdit(d, r),
mode: "edit",
// pass a ref so each open uses the latest value
initialForm: currentFormRef.current,
baselineForm: currentFormRef.current,
});
function openCreate() {
presentCreate({ onWillDismiss: handleCreateDismiss });
}
function openEdit(project: ProjectCardProps) {
currentFormRef.current = projectToForm(project); // update ref first
presentEdit({ onWillDismiss: (e) => handleEditDismiss(project.id, e) });
}
```
Подробнее здесь: [url]https://stackoverflow.com/questions/79785784/best-pattern-for-create-vs-edit-form-in-react-ionic-framework[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия