首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复‘eslint-禁用-下一行反应/无不稳定-嵌套-组件’

如何修复‘eslint-禁用-下一行反应/无不稳定-嵌套-组件’
EN

Stack Overflow用户
提问于 2022-06-12 04:44:01
回答 2查看 2.7K关注 0票数 2

我有以下的代码片段在我的反应-本机类型记录项目。

代码语言:javascript
复制
import React from 'react';
import { View, Text } from 'react-native';

import DropDownPicker from 'react-native-dropdown-picker';

const Dropdown = () =>{
  <DropDownPicker
    ArrowDownIconComponent={() => ( // this is the section I getting the error message
      <MaterialCommunityIcons
        name="home-outline"
        size={50}
        color={theme.colors.text}
      />
    )}
  />
}

由于es-lint,它提供了以下错误消息:

错误消息:

在父组件之外声明此组件为"DropDown“或回溯它。如果希望允许在道具中创建组件,请将true.eslintreact/no-unstable-nested-components选项设置为allowAsProps。

错误图像:在这里输入图像描述

我能知道如何修复上面的错误吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-12 05:21:04

只需声明父组件之外的组件:

代码语言:javascript
复制
const ArrowDownIconComponent = () => (
  <MaterialCommunityIcons
    name="home-outline"
    size={50}
    color={theme.colors.text}
  />
);

const Dropdown = () =>{
  <DropDownPicker
    ArrowDownIconComponent={ArrowDownIconComponent}
  />
}

或者,如果themeDropdown组件的状态变量,那么将其回溯:

代码语言:javascript
复制
const Dropdown = () =>{

  const theme = useTheme();

  const ArrowDownIconComponent = useMemo(() => (
    <MaterialCommunityIcons
        name="home-outline"
        size={50}
        color={theme.colors.text}
      />
  ), [theme.colors.text])

  return (
    <DropDownPicker
      ArrowDownIconComponent={ArrowDownIconComponent}
    />
  );
}

解释

在此之前

每当状态更改时,都会重新声明和重新呈现ArrowDownIconComponent

之后

ArrowDownIconComponent只声明一次(或者只有在更改theme.colors.text时才重新声明),因此它将提高一些性能。

票数 3
EN

Stack Overflow用户

发布于 2022-08-03 17:44:38

我是个菜鸟,不知道为什么,但useMemo没有为我工作。我不得不在我的例子中使用useCallback,它看起来像

代码语言:javascript
复制
const Dropdown = () =>{

  const theme = useTheme();

  const ArrowDownIconComponent = useCallback(() => (
    <MaterialCommunityIcons
        name="home-outline"
        size={50}
        color={theme.colors.text}
      />
  ), [theme.colors.text])

  return (
    <DropDownPicker
      ArrowDownIconComponent={ArrowDownIconComponent}
    />
  );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72589532

复制
相关文章

相似问题

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