You attempted to set the key `port` with the value `8883` on an object that is meant to be immutable and has been frozen
Как исправить данную ошибку.
You attempted to set the key
portwith the value8883on an object that is meant to be immutable and has been frozen
Получаю ее после того как пытаюсь повторно создать клиента для MQTT подключения. Что использую: react-native, а для mqtt подключения данную библиотеку sp-react-native-mqtt. Отлаживаю пока только на андроид устройстве.
Работает это так:
- Открываю экран => запрос к REST API
- Получаю конфигурацию => создаю MQTT клиента
- Подключаю MQTT клиента
- Обмен сообщениями РАБОТАЕТ
- Нажимаю на кнопку назад в хедере => Обрабатывается отключение/удаление MQTT клиента
- Переключаюсь на другой экран, где должен подключиться снова MQTT клиент
- отправка (publish) => выдает эту ошибку
Насколько я понимаю, что существует некая сущность с ключом port, которая не может быть перезаписана при инициализации нового клиента.
Где она находится и как ее обработать?
Ответы (1 шт):
Вопрос решен.
Первое - я отказался от использования sp-react-native-mqtt и написал собственную реализацию для paho js mqtt клиента
Второе - использовал возможности useEffect-хука. Хук включает в себя возможность использования следующую конструкцию
useEffect(() => {
function do_smth() {
}
return () => {
// здесь можно очистить все хандлеры в том числе и относящиеся к mqtt клиенту
};
});
Для сброса клинта mqtt или просто вызвать unsubscribe для определенных топиков и т.д. при переключении между экранами