警告'ScrollingHorizo​​ntally'已定义,但从未使用过no-unused-vars

时间:2019-03-13 13:43:58

标签: reactjs gatsby

有人可以帮忙解释这个错误吗?我尝试了几种不同的方式来编写React.Component。缺少什么吗?

错误:

  

4:7警告'ScrollingHorizo​​ntally'已定义,但从未使用过no-unused-vars

组件:

import React, { Component } from 'react'
import HorizontalScroll from 'react-scroll-horizontal'

class ScrollingHorizontally extends Component {
  render() {
    const child   = { width: `30em`, height: `100%`}
    const parent  = { width: `60em`, height: `100%`}
    return (
      <div style={parent}>
        <HorizontalScroll>
            <div style={child} />
            <div style={child} />
            <div style={child} />
        </HorizontalScroll>
      </div>
    )
  }
}

我也尝试过:

import React from 'react'
import HorizontalScroll from 'react-scroll-horizontal'

class ScrollingHorizontally extends React.Component {
  ...

1 个答案:

答案 0 :(得分:2)

要回答您的问题,最初收到的警告是您定义了变量ScrollingHorizontally,但从未使用过它。即使它是一个类,它仍然是定义的变量。使用标准变量更容易证明此错误:

const things = 123;
const stuff = 456; // this will throw an warning because it is never used.

console.log(things);

类也会发生相同的情况。如果您在文件中定义一个类而从不使用它,则将收到该警告。从文件中导出类将有效地使用它,因为您正在执行导出它的操作。

-

为什么会出现此错误?

  

元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记了从定义文件中导出组件,或者可能混淆了默认导入和命名导入。

这很简单,您没有从文件中导出类,因此当您将组件导入到index.js文件中时,它什么也没找到。并非文件中的所有类都会自动导出,您需要明确声明应将其导出。这样,您就可以将某些类或变量private保留在特定文件中。

MDN - Export (this link breaks down the different types of exporting)

在一个文件中包含多个组件的示例:

parent.js

import React from 'react';


// This component is not exported, can only be used within
// this file.
class Child extends React.Component {
    // ...
}

// This component is not used in the file but is exported to be
// used in other files. (named export)
export class RandomComponent extends React.Component {
    // ...
}

// This component is exported as the default export for the 
// file. (default export)
export default class Parent extends React.Component {

    //...

    render() {
        return <Child />
    }
}

index.js

import React from 'react';

import Parent, { RandomComponent } from './parent.js';

// ...