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

在调用静态子组件时定义React Prop键

姬选
2023-03-14

我试图更好地理解键在React组件中的作用。我已经读了很多,但是我看到的每个示例(比如React文档中的示例或S.O上的精彩解释)都假设进入组件的数据是动态的。

这些示例都应用带有数组索引值的键,或者使用类似于. map()的东西来动态地为子组件的每个实例分配数据库ID,并满足React对键的需求。

我的例子是在一个静态站点上,静态内容进入子组件,该子组件会被调用几次。我认为最好的办法是,我可以创建一个随机数生成器函数getRandomInt,并以这种方式应用该键。

不幸的是,这会导致熟悉的React错误:

数组或迭代器中的每个子级都应该有一个唯一的“键”道具。检查的渲染方法CaseStuy意见摘要。它是从诊断案例研究传递给孩子的。

我哪里做错了?

父组件(诊断案例研究

import React from 'react'
import CaseStudyOpinionSummary from '../../../components/CaseStudyOpinionSummary'

export default class DiagnosticCaseStudy extends React.Component {

  getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min
  }

  render() {
    return (
      <CaseStudyOpinionSummary
        part="Part One"
        partTitle="Diagnosis"
        partSubtitle="Primary Care Encounter"
        partSummary="Short brief"
        key={ this.getRandomInt(0, 100000) } 
      />
      <CaseStudyOpinionSummary
        part="Part Two"
        partTitle="Medication and Management"
        partSubtitle="Initial Gastroenterologist Encounter"
        partSummary="Another short brief"
        key={ this.getRandomInt(0, 100000) } 
      />
    )
  }

子组件(CaseStudyOpinionSummary

import React from 'react'

export default class CaseStudyOpinionSummary extends React.Component {

  render() {
    return (   
      <div> 
        <section className="lightest-gray-bg">
          <section className="aga-cs-container-short">
            <section className="aga-container">
              <h2 className="aga-cs-orange-title">{[this.props.part, ": ", this.props.partTitle ]}</h2>
              <h2 className="aga-cs-question-title">{ this.props.partSubtitle }</h2>
              { this.props.partSummary }
            </section>
          </section>
        </section>
      </div>
    )
  }
}

共有1个答案

逑阳泽
2023-03-14

React只需要道具来区分数组中的同级组件。常规同级组件不需要道具。

class AppWithArray extends React.Component {
  render() {
    return (
      <div>
      {[
        <div key="1"> test1 </div>,
        <div key="2"> test2 </div>
      ]}
      </div>
    );
  }
}

class AppWithoutArray extends React.Component {
  render() {
    return (
      <div>
        <div> test3 </div>
        <div> test4 </div>
      </div>
    );
  }
}

ReactDOM.render(
  <div>
    <AppWithArray />
    <AppWithoutArray />
  </div>,
  document.getElementById("root")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="root"></div>
 类似资料:
  • 所以,每次vuex中的状态不为null时,我都试图更新组件中的一些数据。我用laravel设置了一个API路由,在用户登录后返回用户信息。 API路线: Vuex: 所以在我的应用程序中。vue,在created方法中,如果令牌存在,我将使用http响应作为有效负载提交SET_AUTH_USER。 应用程序。vue: 到目前为止,一切正常。每次我刷新页面,只要我的本地存储中有一个令牌,用户对象将永

  • 想知道是否有一种在Java中实现这一点的方法。 想象一下,我想创建一个父类(可能是抽象的)并创建多个不同的子类。我希望所有类都有一个特定的字段,但我需要该字段在子上下文中是静态的。有没有办法在父类中定义它? 例如,假设我对名为Foo的字段有getter和setter。在父类中,静态字段初始化为字符串“foo”。我有两个儿童班AbsChildOne和AbsChildOne。我希望能够做到的是: 返回

  • 如果需要使用内置的规则验证单个数据,可以使用静态调用的方式。 要支持静态调用的话,必须使用think\facade\Validate类。 // 日期格式验证 Validate::dateFormat('2016-03-09','Y-m-d'); // true // 验证是否有效的日期 Validate::isDate('2016-06-03'); // true // 验证是否有效邮箱地址 Va

  • 本文向大家介绍在C ++中定义静态成员,包括了在C ++中定义静态成员的使用技巧和注意事项,需要的朋友参考一下 可以使用static关键字定义C ++中类的静态成员。内存中只有静态类成员的一个副本,而不管该类的对象数目如何。因此,静态成员由所有类对象共享。 如果没有以任何其他方式初始化该类的第一个对象,则在创建该类的第一个对象时,该静态类成员将初始化为零。 演示静态类成员定义的程序如下: 示例 上

  • 我正在做一个离子2项目。 这是我向本地API发出请求的提供者/服务... 组件的导出类:在控制台中返回undefined 事情是这样的,当我从服务中执行console.log(this.data.text())时,一切都在控制台中正常输出。

  • 我在layout/XML中创建了一个自定义组件,它有两个文本视图和两个按钮。在它的支持类中,我只是让按钮递增和递减其中一个TextView的值 接下来,我创建了另一个包含5或6个复合组件的XML布局 在此布局的支持类(扩展活动)中,我设置了复合组件变量setContentView(),并尝试以下操作: 我收到一个错误声明-无法启动活动组件信息)。我只有在调用setLabel()时才会出现此错误。