简体   繁体   English

使用 React 构建鼓机时出错

[英]Error while building a drum machine using React

I'm building a fcc-drum machine using React I get the following error when trying to map a data object:我正在使用 React 构建 fcc-drum 机器我在尝试映射数据对象时收到以下错误:

Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.错误:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件)但得到:对象。 You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。

Check the render method of App .检查App的渲染方法。

Below is the data that I am trying to map along with my code:以下是我试图与我的代码一起映射的数据:

const soundData = [{ 
 letter:"Q",
 src:"https://raw.githubusercontent.com/wesbos/JavaScript30/master/01%20-%20JavaScript%20Drum%20Kit/sounds/clap.wav",
 id: "clap"
},{

    letter:"W",
    src: "https://raw.githubusercontent.com/wesbos/JavaScript30/master/01%20-%20JavaScript%20Drum%20Kit/sounds/hihat.wav",
    id:"hihat"
 },
 {
    letter:"E",
    src: "https://raw.githubusercontent.com/wesbos/JavaScript30/master/01%20-%20JavaScript%20Drum%20Kit/sounds/kick.wav",
    id:"kick"
  },{
    letter:"A",
    src: "https://raw.githubusercontent.com/wesbos/JavaScript30/master/01%20-%20JavaScript%20Drum%20Kit/sounds/openhat.wav",
    id:"openhat"
   },{

    letter:"S",
    src: "https://raw.githubusercontent.com/wesbos/JavaScript30/master/01%20-%20JavaScript%20Drum%20Kit/sounds/boom.wav",
    id:"boom"
 },{

    letter:"D",
    src: "https://raw.githubusercontent.com/wesbos/JavaScript30/master/01%20-%20JavaScript%20Drum%20Kit/sounds/ride.wav",
    id:"ride"
 },{

    letter:"Z",
    src: "https://raw.githubusercontent.com/wesbos/JavaScript30/master/01%20-%20JavaScript%20Drum%20Kit/sounds/snare.wav",
    id:"snare"
 },{

    letter:"X",
    src: "https://raw.githubusercontent.com/wesbos/JavaScript30/master/01%20-%20JavaScript%20Drum%20Kit/sounds/tom.wav",
    id:"tom"
 },{

    letter:"C",
    src: "https://raw.githubusercontent.com/wesbos/JavaScript30/master/01%20-%20JavaScript%20Drum%20Kit/sounds/tink.wav",
    id:"tink"
 }]

   export default soundData
import React from "react";
import "./App.css";
import soundData from "./soundData.js";
import DrumPad from "./drumPad.js";

class App extends React.Component {
  render() {
    console.log(soundData);
    console.log(DrumPad);

    return (
      <div id="drum-machine">
        <div id="display" />
        {soundData.map(Data => (
          <DrumPad />
        ))}
      </div>
    );
  }
}

export default App;

import React from "react";

function DrumPad(props) {
  return <div className="drum-pad" />;
}

export default DrumPad

What am I doing wrong?我究竟做错了什么?

I would recommend taking a look at this question to find out more details about your error, but nevertheless, I've shared a working example below using functional components and fixing the missing key error mentioned by @DaniilLoban.我建议您查看此问题以了解有关您的错误的更多详细信息,但尽管如此,我还是在下面使用功能组件共享了一个工作示例,并修复了@DaniilLoban 提到的丢失的关键错误。 The working example will print out the value of the letter and id keys from each object in your soundData array.工作示例将打印出 soundData 数组中每个对象的letterid键的值。

App.js应用程序.js

import React from "react";
import "./styles.css";
import DrumPad from "./DrumPad";
import soundData from "./soundData";

export default function App(props) {
  return (
    <div id="drum-machine">
      <div id="display" />
      {soundData.map((data) => (
        <DrumPad data={data} key={data.letter} />
      ))}
    </div>
  );
}

DrumPad.js鼓垫.js

import React from "react";
import "./styles.css";

export default function DrumPad(props) {
  const { data } = props;
  return (
    <div className="drum-pad">
      <p>{data.letter}</p>
    </div>
  );
}

工作示例

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM