javascript - 如何通过 3 类组件传递数据以正确使用react?

标签 javascript arrays reactjs

这是一个 React 初学者练习,所以请耐心等待,不要被最新的最佳实践淹没。

对于这个练习,我需要 3 个类组件:

  1. Main.js:基本上只包含一个数组
  2. List.js:通过该数组进行映射,并在每次迭代时将数组的元素传递给 Item.js
  3. Item.js:在这里渲染映射数组

我对前两个部分很有信心,但无法从 2 跳到 3。谁可以不仅发布答案而且评论关键思想?谢谢!

目前我对 Main.js 和 List.js 的了解

Main.js

import React from "react";

export const avengers = ["Ironman", "Thor", "Hulk", "Hawkeye", "Black Widow"]

List.js

import React from "react";
import Main, { avengers } from "Main.js";


class List extends React.Component {
    render() {
        return (
            <div>
                {avengers.map((superhero, index) =>
                    <Item key={index} superhero={superhero}/>
                )}
            </div>
        );
    }
}

export default List;

Item.js

import React from "react";
import ReactDOM from "react-dom";
import List from "./List.js";

class Item extends React.Component {
  render() {
    return (
          <div>
            {this.props.superhero}
          </div>
    );
  }
}

export default Item;

最佳答案

你遇到的一个问题是传递 props 时

<Item key="index" superhero="{superhero}" />

你应该像这样传递它

<Item key={index} superhero={superhero} />

如果你输入 is ass someProp="something" 你只是在传递一个字符串。

如果要传递变量,需要像someProp={someVariable}这样传递

并且 Prop 可以在 Item 内部访问,例如 this.props.someProp(如果它是一个类组件,或者 props.someProp 如果是一个功能组件,其中 props 是您的功能组件的参数。

编辑

我刚刚在你的代码中看到的一个错误是这两行

const avengers = ["Ironman", "Thor", "Hulk", "Hawkeye", "Black Widow"]

import avengers from "Main.js";

在第一行中,您创建了 avangers 但您从未export 它,因此您希望能够 import 它。

您需要做的是添加 export 并在导入时按名称导入(在 {} 内),因为您导入的方式是获取默认导出。

应该是这样的

// added export
export const avengers = ["Ironman", "Thor", "Hulk", "Hawkeye", "Black Widow"]

// importing avengers correctly
import Main, { avengers } from "Main.js";

编辑2

不确定这是不是你想要的,但我猜

class Item extends React.Component {
  render() {
    return (
          <div>
            {this.props.superhero}
          </div>
    );
  }
}

export default Item;

最后编辑

我给你做了一个codesandbox有一个工作示例。请看看它是如何工作的,尝试一下并尝试从中学习。希望这有帮助;)

关于javascript - 如何通过 3 类组件传递数据以正确使用react?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080996/

相关文章:

javascript - 我的提示似乎不起作用

javascript - Grunt "Gruntfile.js"任务...错误

javascript - 使用 TweenLite (JS) 淡入淡出文本不起作用

java - 保持两个数组 String[] 和 int[] 与合并排序并行

c++ - "glibc detected - free(): invalid pointer - Program received signal SIGABRT, Aborted"

ruby-on-rails - 使用 React Rails 显示关联的模型数据

javascript - 引导网格完成布局后是否会发出事件?

javascript - 对 2 个数组进行排序/过滤

javascript - 如何使用 React-router-dom 版本 6 useNavigate 和 typescript 传递参数

reactjs - 在reactjs应用程序中获取网络请求失败