Búsqueda de sitios web

javascript - 'React' debe estar en el alcance cuando se usa JSX react/react-in-jsx-scope?


Soy un desarrollador de Angular y nuevo en React. Este es un componente simple de React pero no funciona

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;

Error : 'React' debe estar en el ámbito al usar JSX react/react-in-jsx-scope

Respuesta #1

La línea de importación debería ser:

import React, { Component }  from 'react';

Nota la R mayúscula de React.

Respuesta #2

Agrega la siguiente configuración en .eslintrc.js/.eslintrc.json para ignorar estos errores:

  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
  }

¿Por qué? Si estás usando NEXT.js, entonces no necesitas importar React al inicio de los archivos, Next.js lo hace por ti.

Ref: https://gourav.io/blog/nextjs-cheatsheet (chuleta de Next.js)

Respuesta #3

Si estás usando React v17, puedes desactivar la regla de manera segura en tu archivo de configuración de eslint:

"rules": {
   ...
    "react/react-in-jsx-scope": "off"
   ...
}

Respuesta #4

Para aquellos que aún no entienden la solución aceptada:

Agregar

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

en la parte superior del archivo.

Respuesta #5

Si estás usando React 17+ (y en 2022, supongo, que lo estás) - necesitas añadir la siguiente línea a tu .eslintrc:

{
  "extends": ["plugin:react/jsx-runtime"]
}

Luego, solo importa React una vez en tu archivo de nivel superior, como App.jsx, y no necesitas importarlo en ningún otro lugar, a menos que necesites una API como useEffect, etc.

Respuesta #6

Tuve un problema similar.

Se solucionó después de que agregué el código a continuación en el componente principal: App.js. Si tienes otros componentes, asegúrate de importar React en esos archivos también.

import React from "react";

Respuesta #7

Para mí, tuve este problema una vez que usé npm audit fix --force, así que degradó react-scripts a la versión 2 y me obligó a instalar eslint versiones 5 y los problemas comenzaron a aparecer, para solucionar esto tuve que actualizar de nuevo react-scripts y las cosas funcionaron. También asegúrate de que tu eslint contenga esas reglas

module.exports = {
  extends: ['react-app', 'react-app/jest', 'airbnb', 'prettier'],
  plugins: ['prettier'],
  rules: {
    ...
    // React scope no longer necessary with new JSX transform
    'react/react-in-jsx-scope': 'off',
    // Allow .js files to use JSX syntax
    'react/jsx-filename-extension': ['error', { extensions: ['.js', '.jsx'] }],
    ...
  },
}

Respuesta #8

agrega "plugin:react/jsx-runtime" a extends en tu archivo de configuración de eslint, consulta react-in-jsx-scope

Artículos relacionados