Я испробовал все решения на StackOverflow, на нескольких других веб-страницах и в различных чат-ботах. Все они дают мне несколько решений, в том числе: обертывание моей функции renderItem в мемоизацию, использование класса pureComponent вместо функционального компонента и использование Callback.
Независимо от того, что я использую, я все равно остаюсь получаю ту же ошибку. Это приводит к зависанию пользовательского интерфейса, поэтому я не могу просто игнорировать это! Что еще больше расстраивает, так это то, что я обернул функцию renderItem в заметку для другого списка с аналогичной функцией renderItem и структурой данных, и это сработало!
Я попробовал следующий код:
const BleSections = (params) => {
if (!params.device) {
return [];
}
const { sections: deviceSections } = params.device;
return [
{
title: "Address",
data: [
{ label: "MAC", value: params.device.bleDeviceAddress },
],
},
{
title: "Temperature",
data: [
{ label: "Cloud ID", value: deviceSections?.Temperature?.cloud_id },
{ label: "Local ID", value: deviceSections?.Temperature?.local_id },
],
},
{
title: "Humidity",
data: [
{ label: "Cloud ID", value: deviceSections?.Humidity?.cloud_id },
{ label: "Local ID", value: deviceSections?.Humidity?.local_id },
],
},
{
title: "Panic",
data: [
{ label: "Cloud ID", value: deviceSections?.Panic?.cloud_id },
{ label: "Local ID", value: deviceSections?.Panic?.local_id },
],
},
];
};
export default BleSections;
const sections = BleSections({
device: Object.values(bleDevices).find(device => bleDevice &&
device.bleDeviceAddress === bleDevice.id)
});
import React, { memo } from "react";
import { View, Text } from "react-native";
import ScanStyle from "../Styles/ScanStyle.js";
import BleTextRender from "./BleTextRender.js";
const BleSectionRender = ({ item: section }) => {
return (
{section.title}
{section.data.map((item, itemIndex) => (
))}
);
};
export default memo(BleSectionRender);
import React, { memo } from "react";
import { View, Text } from "react-native";
import ScanStyle from "../Styles/ScanStyle";
const BleTextRender = ({ label, value }) => {
return (
{label}:
{value ? value : "Not set"}
);
};
export default memo(BleTextRender);
index.toString()}
contentContainerStyle={ScanStyle.content}
/>
Подробнее здесь: https://stackoverflow.com/questions/793 ... deritem-fu
У вас большой список, который медленно обновляется. Ошибка после запоминания функции renderItem. ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Предотвращение запоминания положения при прокрутке мобильного браузера при изменении вида
Anonymous » » в форуме CSS - 0 Ответы
- 37 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Какие мнемоники и т. д. вы используете для запоминания сценариев bash? [закрыто]
Anonymous » » в форуме Linux - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-