'React' doit être dans la portée lors de l'utilisation de JSX react / react-in-jsx-scope?

129

Je suis un développeur angulaire et nouveau sur React, il s'agit d'un simple composant de réaction mais ne fonctionne pas

import react , { Component}  from 'react';
import         { render   }  from 'react-dom';

class TechView extends Component {

    constructor(props){
       super(props);
       this.state = {
           name:'Gopinath'
       }
    }
    render(){
        return(
            <span>hello Tech View</span>
        );
    }
}

export default TechView;

Erreur: 'React' doit être dans la portée lors de l'utilisation de JSX react / react-in-jsx-scope

Gopinath Kaliappan
la source

Réponses:

250

La ligne d'importation doit être:

import React, { Component }  from 'react';

Notez le R majuscule pour React.

patrick
la source
3
comment l'éviter. Je veux dire lorsque je crée une fonction sans état, dans Nextjs, cela ne l'exige pas
Muhaimin CS
1
@MuhaiminCS change la règle dans votre fichier eslintrc
patrick
24

Pour ceux qui n'obtiennent toujours pas la solution acceptée:

Ajouter

import React from 'react'
import ReactDOM from 'react-dom'

en haut du fichier.

Ankit Pandey
la source
15

Ajoutez le paramètre ci-dessous pour .eslintrc.js/ .eslintrc.jsonpour ignorer ces erreurs:

  rules: {
    // suppress errors for missing 'import React' in files
   "react/react-in-jsx-scope": "off",
    // allow jsx syntax in js files (for next.js project)
   "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }], //should add ".ts" if typescript project
  }

Pourquoi? Si vous utilisez, NEXT.jsvous n'avez pas besoin d'importer Reacten haut des fichiers, nextjs le fait pour vous.

JerryGoyal
la source
Utilisateur NextJs ici, merci pour cela. Étant donné que l'ajout de la règle "react/react-in-jsx-scope": "off"éliminera l'erreur, qu'est-ce que l'ajout globalsaccomplit? Merci!
DeBraid
10
import React, { Component } from 'react';

Il s'agit d'une faute d'orthographe, vous devez taper Reactau lieu de react.

kallayya Hiremath
la source
Cette réponse exacte a déjà été fournie comme réponse acceptée.
Dylan Maxey