react-native - 反应原生 flatlist usememo 不起作用
问题描述
我应该避免重新渲染。那么为什么这段代码不起作用呢?
RenderItem 不是函数。
import React, { memo, useMemo } from 'react';
import { StyleSheet, Text, View, FlatList, TextInput, TouchableOpacity, Image, Dimensions } from 'react-native';
const Shopping_cart = ({ datas, onPressSetting }) => {
const RenderItem = useMemo((item) => {
return (
<Text>Hello</Text>
)
}, [datas]);
return (
<FlatList
data={datas}
keyExtractor={item => item.item.product_id}
renderItem={({ item }) => RenderItem(item)}
/>
)
};
解决方案
尝试将RenderItem作为组件传递。
例子
import React, { memo, useMemo } from 'react';
import { StyleSheet, Text, View, FlatList, TextInput, TouchableOpacity, Image, Dimensions } from 'react-native';
const Shopping_cart = ({ datas, onPressSetting }) => {
const RenderItem = useMemo(({item}) => {
return (
<Text>{item.title}</Text>
)
}, [datas]);
return (
<FlatList
data={datas}
keyExtractor={item => item.item.product_id}
renderItem={({ item }) => <RenderItem item={item} />}
/>
)
};
推荐阅读
- visual-studio-2015 - unistd.h - 编译失败
- laravel - 具有关系和插入的 laravel 表
- wpf - 使用 uwp 应用程序打开不受支持的文件类型扩展名
- tensorflow - Heroku:张量流 2.2.1 太大而无法部署
- jmeter - 带有 java 脚本的 JSR223 后处理器将值传递给数组
- highcharts - 固定高图表中条形的高度/宽度
- r - 计算回归截距并将它们保存在单独的列中
- amazon-web-services - 在 Redshift Spectrum 中选择带有连字符的字段
- delphi - 如何在同一备忘录行列出银行的查询?
- python - 如何使用python列出sharepoint文件夹中的所有文件