当前位置: 首页 > 知识库问答 >
问题:

反应:如何构造组件

宫坚
2023-03-14

我正在学习react,需要一些关于如何构建组件树的建议。

我想建立一个带有相关过滤器的通用列表

我有:

>

  • 列表组件:显示项目的列表。道具:

    • 子:prop(一个函数),用于呈现列表的每个项目(项目)=

    筛选组件:用于筛选列表的一组输入/选择

    • filterList:包含所有字段名的数组
    • onChange:字段更改时调用的函数
    • stateValues:字段的值(上述组件中的状态)

    ListAndFilterContainer:包含筛选器的状态并将其传递给列表

    • list:传递给list组件的项目列表
    • 子元素:函数作为子元素传递给列表,以显示项目
    • filterList:传递给过滤器组件的字段列表

    ListAndFilterContainer的渲染:

    `<div>
        <FilterOnList 
          filterList={this.props.filterList} 
          filterState={this.state.filter} 
          onChange={this.handleFilterChange} />
        <ListComponent 
            list={this.props.list} 
            title={this.props.title}
        >
            {this.props.children}
        </ListComponent>
    </div>`
    

    现在,为了使其通用化,我希望能够修改列表如何呈现的标记,以及过滤器组件的输入字段如何呈现的标记。

    我希望能够使用过滤列表的逻辑,但我仍然希望在演示文稿上自由发挥。

    我如何构建它?我想最简单的方法是继承列表组件并更改渲染?例如,创建CarList扩展列表?过滤器组件也一样吗?谢谢


  • 共有1个答案

    汝才良
    2023-03-14

    一些想法...

    • 使用容器组件保存状态是个好主意。这是一种适合React的模式。
    • 听起来ListComponent可能只是有不同类型的子项,可能不需要对不同的列表类型进行特定的处理。换句话说,您可能拥有一个CarItem组件数组,并将其呈现为ListComponent的子级,而不是制作一个单独的CarListComponent。这取决于您是否真的需要不同的逻辑来呈现不同的列表。一些视觉上的差异,例如较小的行高,可以通过CSS来实现,因此如果您传入一个className道具并将其呈现为

     类似资料:
    • 我的react组件的构造函数被调用了两次,但我不知道为什么。我正在使用react redux存储我的应用程序的语言。我有一个基于浏览器语言设置默认语言的函数。LoginPage是第一个获得render的组件,因此我在其构造函数中调用了我的函数。基本上,它所做的就是比较并分派一个动作。当我用redux开发工具检查我的状态时,我看到它被调度了两次。我在构造函数中打印了虚拟数据,它也打印了两次。 登录页

    • 使用npm start启动React应用程序时发生此错误。。。 我试过以下方法: > 卸下node_模块包并重新安装 使用纱线代替npm 使用npm3.updatefsevent库 仍然得到这个错误吗 注意:如果我们创建反应应用程序新鲜/新纱线启动将工作,但我们关闭终端,并使用以下相同的东西重新启动错误发生 返回(新事件(路径))。打开('fsevent',回调)。start()^ TypeErr

    • 我有以下代码: 我要复制的类: 创建一些类 公共对象createObj(String cls\u name,String param1,int param2){返回Class.forName(cls\u name)。getConstructor(String.Class,Integer.Class)。newInstance(param1,param2);} 然后我尝试使用以下内容复制该类的对象:

    • 我有一个帖子列表,我试图在构造函数或componentDidMount中为每个帖子调用一个操作。但不知何故,当我发送一个新消息时,构造函数和componentDidMount函数会被调用两次。 当从列表中读取帖子时,这些函数仅被调用一次。但是当我发送一条新消息时,他们会被呼叫两次。 我怎样才能避免这种情况。我试着像这样使用ComponendDupDate函数:

    • 问题内容: 我在python中有一个文件名,我想从所有文件名中构造一个。 这似乎不起作用。怎么办 问题答案: 如果您具有可散列对象的列表(文件名可能是字符串,那么它们应该算在内): 您可以直接构造集合: 实际上,将这种方式与 任何可迭代对象一起使用! (鸭子打字不好吗?) 如果要迭代进行: 但是很少需要这样做。我只提到它是因为该方法非常有用。

    • 反向引用构造允许随后在同一正则表达式中识别先前匹配的子表达式。 下表列出了这些结构 - 反向引用构造 描述 图案 火柴 \ number 反向引用。 匹配带编号的子表达式的值。 (\w)\1 "ee" in "seek" \k< name > 命名为反向引用。 匹配命名表达式的值。 (?\w)\ k "ee" in "seek"