A typical React project consists of multiple files and folders, each with its specific role.
This chapter will provide a basic explanation of React project code, helping you understand the project structure and the function of each part.
* A React project consists of multiple files and folders. The core files include `index.html`, `index.js`, and `App.js`.
* React components are the basic building blocks of an application, which can be function components or class components.
* JSX is the core syntax of React, used to describe the UI.
* Props and State are the main ways to manage data in React components.
### Project Structure
A React project typically contains the following files and folders:
my-react-app/βββ node_modules/ # Third-party libraries that the project depends onβββ public/ # Static resource folderβ βββ index.html # HTML template for the applicationβ βββ ... # Other static resources (such as images, fonts, etc.)βββ src/ # Project source codeβ βββ App.js # Main componentβ βββ App.css # Styles for the main componentβ βββ index.js # Project entry fileβ βββ index.css # Global stylesβ βββ ... # Other components and resourcesβββ package.json # Project configuration and dependency managementβββ package-lock.json # Exact version lock file for dependenciesβββ README.md # Project documentation
* * *
## Core File Analysis
### public/index.html
**public/index.html** is the HTML template file for the React application.
React will render components into ``.
React will render components into
.## Example
React App
### src/index.js
**src/index.js** is the entry file for the React application.
**src/index.js** is responsible for rendering the root component (usually App) into the div#root in index.html.
## Example
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import'./index.css';
ReactDOM.render(
,
document.getElementById('root')
);
### src/App.js
**src/App.js** is the root component of the React application.
**src/App.js** usually contains the main logic and structure of the application.
## Example
import React from 'react';
import'./App.css';
function App(){
return(
Hello, React!
);
}
export default App;
### src/App.css
**src/App.css** is the style file for the App component.
## Example
.App{
text-align:center;
margin-top:50px;
}
### src/index.css
**src/index.css** is the global style file, usually used to define global styles or reset browser default styles.
## Example
body {
margin:0;
font-family: Arial,sans-serif;
}
### package.json
**package.json** This is the project's configuration file, containing project metadata, dependencies, and scripts.
## Example
{
"name":"my-react-app",
"version":"1.0.0",
"scripts":{
"start":"react-scripts start",// Start development server
"build":"react-scripts build",// Build production code
"test":"react-scripts test",// Run tests
"eject":"react-scripts eject"// Eject configuration (advanced usage)
},
"dependencies":{
"react":"^18.2.0",
"react-dom":"^18.2.0",
"react-scripts":"5.0.1"
}
}
* * *
## Basic Structure of React Components
React components are the core building blocks of a React application.
A component typically contains the following parts:
### 1γFunction Components
Components defined using functions.
## Example
import React from 'react';
function MyComponent(){
return(
This is a function-defined component
);
}
export default MyComponent;
**Explanation:**
* **`import React from 'react';`**: Imports the React library. React is a JavaScript library for building user interfaces.
* **`function MyComponent() { ... }`**: This is a function component. A function component is a JavaScript function that returns JSX.
* **`return (...)`**: The component's `return` statement returns a JSX element. JSX is a syntax extension for JavaScript that allows you to write HTML-like code in JavaScript.
* **`export default MyComponent;`**: Exports the `MyComponent` component as a default export. This allows other files to import and use this component via `import MyComponent from './MyComponent';`.
### 2γClass Components
Components defined using classes (less commonly used now, function components are recommended).
## Example
import React,{ Component } from 'react';
class MyComponent extends Component {
render(){
return(
This is a class component
);
}
}
export default MyComponent;
**Explanation:**
* **`import React from 'react';`**: Imports the React library, which is the foundation for using React.
* **`import { Component } from 'react';`**: Imports the `Component` class from the React library. `Component` is the base class for React class components, and all class components need to inherit from it.
* **`class MyComponent extends Component { ... }`**: Defines a class component named `MyComponent`. It extends the `Component` class, so it can use React class component features (such as lifecycle methods, state management, etc.).
* **`render() { ... }`**: `render` is a required method in class components. It is responsible for returning the component's UI structure (JSX).
* **`return (...)`**: Returns a JSX element that describes the component's UI.
* **`
This is a class component
`**: This is a simple JSX structure containing a `div` and an `h2` heading.
* **`export default MyComponent;`**: Exports the `MyComponent` component as a default export. This allows other files to import and use this component via `import MyComponent from './MyComponent';`.
### 3γJSX
JSX is a syntax extension for JavaScript that allows writing HTML-like code in JavaScript.
## Example
const element =
Hello, JSX!
;
### 4γProps
Props are input parameters for components, used to pass data from parent components to child components.
## Example
function Welcome(props){
return
Hello,{props.name}
;
}
function App(){
return;
}
### 5γState
State is the internal state of a component, used to manage component data.
## Example (using useState Hook)
import React,{ useState } from 'react';
function Counter(){
const[count, setCount]= useState(0);
return(
Count:{count}
);
}
export default Counter;
* * *
## Running Flow of React Projects
### Start Development Server
Run npm start or yarn start to start the development server.
Open your browser and visit http://localhost:3000 to view the application.
### Build Production Code
Run npm run build or yarn build to generate optimized production code.
### Run Tests
Run npm test or yarn test to execute the project's test cases.