首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React.memo和类型记录

React.memo和类型记录
EN

Stack Overflow用户
提问于 2020-12-05 09:02:31
回答 2查看 732关注 0票数 0

我正在开发一个反应本地应用程序。我目前正在使用项目组件来显示数据的平面列表。但是编辑器为React.memo的第二个参数提供了一个错误,如下所示。

类型'boolean \ undefined‘不能分配到键入'boolean’。

类型'undefined‘不能分配到键入'boolean’。

代码语言:javascript
复制
const Item = React.memo(
    ({ icon, title }: any) => {
        return (
            <Box
                flexDirection="row"
                paddingHorizontal="l"
                justifyContent="space-between"
                alignItems="center"
                style={{ marginTop: 35 }}
            >
                <Box flexDirection="row" alignItems="center" flex={1}>
                    {icon}

                    <Box marginLeft="l">
                        <Text  variant="stackHeader">{title}</Text>
                        <Text
                            fontSize={15}
                            fontFamily="CrimsonRegular"
                            style={{ color: '#575757' }}
                        >
                            Last update: 03/06/2020
                        </Text>
                    </Box>
                </Box>
                <TouchableOpacity onPress={() => Clipboard.setString(title as string)}>
                <FontAwesome5 name="copy" size={28} color="white" />
                </TouchableOpacity>
            </Box>
        );
    },
    (prev, next) => { // error here
        if (prev.title === next.title) {
            return true;
        }
    }
);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-05 09:25:33

代码语言:javascript
复制
(prev, next) => { // error here
    if (prev.title === next.title) {
        return true;
    }
}

类型记录期望此函数返回boolean。但它只是偶尔会发生。如果条件不满足,则不执行return语句,这将导致返回undefined的函数。即使undefined是假的,它也不是false的布尔值。

因此,要解决这个问题,需要使函数始终在所有条件分支上返回一个布尔值。

例如,可以向返回false的条件中添加一个else子句。

代码语言:javascript
复制
(prev, next) => {
    if (prev.title === next.title) {
        return true;
    } else {
        return false;
    }
}

应简化为以下几点:

代码语言:javascript
复制
(prev, next) => {
    return prev.title === next.title
}
票数 1
EN

Stack Overflow用户

发布于 2020-12-05 09:09:57

实际上,它期望布尔值返回,因此这可能会有所帮助。

代码语言:javascript
复制
(prev, next) => {
   return prev.title === next.title;
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65155332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档