Проблемы с модальным повторным открытием после подачиIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с модальным повторным открытием после подачи

Сообщение Anonymous »

У меня есть боковая панель в чате в реагировании. мертвый). < /p>
Что я ожидаю
1. Пользовательские длинные даты a ряд ⇒ Modal Opens
2. Пользователь обновляет заголовок, а Taps подтверждают
3. Запрос API запускает → Redux Store Updates → Modal остается закрытым < /p>
Что на самом деле происходит < /p>
Шаги 1 и 2 в порядке, но сразу после того, как модал исчезает,
возвращается и застрял на экране. Я должен перезагрузить приложение, чтобы продолжить. Почему текстовый результат может причинить это?

Код: Выделить всё

const SidebarContent: React.FC = ({loading, onSelect}) => {
const {colors, dark} = useTheme();
const dispatch = useDispatch();
const chatThreads = useSelector(threadsSelector());

const [pending, setPending] = useState(null);
const [deleting, setDeleting] = useState(false);
const [renaming, setRenaming] = useState(false);
const [renamingUI, setRenamingUI] = useState(false);
const [title, setTitle] = useState('');
const [titleErr, setTitleErr] = useState('');

const handleInitiateRename = async () => {
setRenamingUI(true);
};

const handleRename = async () => {
if (!pending) return;

if (title.length < 3) {
setTitleErr('Title must be longer than 3 characters');
return;
}

setTitleErr('');

const {threadUuid} = pending;

setRenaming(true);
Keyboard.dismiss();

try {
const newTitle = await chatService.renameChatThread(threadUuid, title);
console.log('newTitle', newTitle.title);
dispatch(renameThread(threadUuid, newTitle.title));
} catch (e) {
console.warn('[renameChatThread]', e);
} finally {
setRenaming(false);
closeModal();
}
};

const closeModal = () => {
Keyboard.dismiss();
setPending(null);
setRenamingUI(false);
setTitle('');
};

const renderThread = ({item, index}: {item: ChatThread; index: number}) => {
const title = item.title ? item.title : `Thread ${index + 1}`;
const lastMsg = item.messages.at(-1)?.message ?? 'No messages yet';

return (

 onSelect(item)}
disabled={!!pending}
onLongPress={() => setPending(item)}
// feels nice on touch
>

{title}


{lastMsg}



);
};

return (

{/* top-right "new chat" icon */}

 console.log('new chat created')}>




{/* list header */}

Chats

{/* {loading && (



)} */}

{!loading && chatThreads.length === 0 && (
No conversations yet.
)}

 t.threadUuid}
renderItem={renderThread}
showsVerticalScrollIndicator={false}
/>

{pending && (
 !renaming || (!deleting && setPending(null))}>
onRequestClose={closeModal}>
style={[
StyleSheet.absoluteFill,
{backgroundColor: 'rgba(0,0,0,0.35)'},
]}
onPress={deleting || renaming ? undefined : closeModal}>
{/* Keyboard avoiding container */}

  e.stopPropagation()}>


{renamingUI ? (



) : null}
{titleErr ? (

{titleErr}

) : null}







{!renamingUI ? (

{deleting ? (

) : (
Delete
)}

) : null}

 handleInitiateRename()
: () => handleRename()
}>

{renamingUI ? 'Confirm' : 'Rename'}







)}

);
};

export default SidebarContent;



Подробнее здесь: https://stackoverflow.com/questions/796 ... submission
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»