У вас большой список, который медленно обновляется. Ошибка после запоминания функции renderItem.Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 У вас большой список, который медленно обновляется. Ошибка после запоминания функции renderItem.

Сообщение Anonymous »

Я испробовал все решения на 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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