首页 > 其他分享 >React 基础阶段学习计划

React 基础阶段学习计划

时间:2024-10-15 23:20:35浏览次数:9  
标签:学习 react Component return React 阶段 组件 import

React 基础阶段学习计划

目标

  • 能够创建和使用React组件。
  • 理解并使用State和Props。
  • 掌握事件处理和表单处理。

学习内容

环境搭建

安装Node.js和npm
  1. 访问 Node.js官网 下载并安装最新版本的Node.js。
  2. 打开终端或命令行工具,输入 node -vnpm -v 检查是否安装成功。
使用Create React App搭建项目
  1. 打开终端,输入以下命令创建一个新的React项目:
    npx create-react-app my-app
    
  2. 进入项目目录:
    cd my-app
    
  3. 启动开发服务器:
    npm start
    

核心概念

JSX语法
  • JSX是一种JavaScript的语法扩展,允许你在JavaScript中编写类似HTML的元素。
  • 示例:
    import React from 'react';
    
    function HelloWorld() {
      return <h1>Hello, World!</h1>;
    }
    
    export default HelloWorld;
    
组件
  • 函数组件:简单的组件,通常用于展示数据。
    import React from 'react';
    
    function Greeting(props) {
      return <h1>Hello, {props.name}!</h1>;
    }
    
    export default Greeting;
    
  • 类组件:功能更强大的组件,可以管理状态。
    import React, { Component } from 'react';
    
    class Counter extends Component {
      constructor(props) {
        super(props);
        this.state = { count: 0 };
      }
    
      increment = () => {
        this.setState({ count: this.state.count + 1 });
      }
    
      render() {
        return (
          <div>
            <p>Count: {this.state.count}</p>
            <button onClick={this.increment}>Increment</button>
          </div>
        );
      }
    }
    
    export default Counter;
    
State和Props
  • State:组件内部的状态,可以通过this.setState方法更新。
  • Props:父组件传递给子组件的属性。
    import React from 'react';
    
    // 子组件
    function ChildComponent(props) {
      return <p>{props.message}</p>;
    }
    
    // 父组件
    class ParentComponent extends React.Component {
      constructor(props) {
        super(props);
        this.state = { message: 'Hello from Parent' };
      }
    
      render() {
        return <ChildComponent message={this.state.message} />;
      }
    }
    
    export default ParentComponent;
    
事件处理
  • 在React中,事件处理函数通常绑定到组件的方法上。
    import React, { Component } from 'react';
    
    class EventHandling extends Component {
      handleClick = () => {
        alert('Button clicked!');
      }
    
      render() {
        return (
          <button onClick={this.handleClick}>
            Click me
          </button>
        );
      }
    }
    
    export default EventHandling;
    
表单处理
  • React中的表单元素默认是受控组件,即它们的值由React组件的状态控制。
    import React, { Component } from 'react';
    
    class FormExample extends Component {
      constructor(props) {
        super(props);
        this.state = { name: '' };
    
        this.handleChange = this.handleChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
      }
    
      handleChange(event) {
        this.setState({ name: event.target.value });
      }
    
      handleSubmit(event) {
        alert('A name was submitted: ' + this.state.name);
        event.preventDefault();
      }
    
      render() {
        return (
          <form onSubmit={this.handleSubmit}>
            <label>
              Name:
              <input type="text" value={this.state.name} onChange={this.handleChange} />
            </label>
            <button type="submit">Submit</button>
          </form>
        );
      }
    }
    
    export default FormExample;
    

组件生命周期

  • 生命周期方法:组件在不同阶段会触发不同的生命周期方法。
    • componentDidMount:组件挂载后调用。
    • componentDidUpdate:组件更新后调用。
    • componentWillUnmount:组件卸载前调用。
    import React, { Component } from 'react';
    
    class LifecycleExample extends Component {
      componentDidMount() {
        console.log('Component did mount');
      }
    
      componentDidUpdate(prevProps, prevState) {
        console.log('Component did update');
      }
    
      componentWillUnmount() {
        console.log('Component will unmount');
      }
    
      render() {
        return <div>Lifecycle Example</div>;
      }
    }
    
    export default LifecycleExample;
    

实践项目

个人博客

  1. 创建项目
    npx create-react-app personal-blog
    cd personal-blog
    npm start
    
  2. 创建组件
    • Header.js:头部组件
      import React from 'react';
      
      function Header() {
        return <header><h1>My Personal Blog</h1></header>;
      }
      
      export default Header;
      
    • PostList.js:文章列表组件
      import React from 'react';
      
      const posts = [
        { id: 1, title: 'First Post', content: 'This is the first post.' },
        { id: 2, title: 'Second Post', content: 'This is the second post.' },
      ];
      
      function PostList() {
        return (
          <div>
            {posts.map(post => (
              <div key={post.id}>
                <h2>{post.title}</h2>
                <p>{post.content}</p>
              </div>
            ))}
          </div>
        );
      }
      
      export default PostList;
      
    • App.js:主组件
      import React from 'react';
      import Header from './Header';
      import PostList from './PostList';
      
      function App() {
        return (
          <div className="App">
            <Header />
            <PostList />
          </div>
        );
      }
      
      export default App;
      

天气应用

  1. 创建项目
    npx create-react-app weather-app
    cd weather-app
    npm start
    
  2. 安装axios
    npm install axios
    
  3. 创建组件
    • Weather.js:天气组件
      import React, { useState, useEffect } from 'react';
      import axios from 'axios';
      
      function Weather() {
        const [weather, setWeather] = useState(null);
        const [city, setCity] = useState('');
      
        useEffect(() => {
          if (city) {
            axios.get(`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=YOUR_API_KEY`)
              .then(response => {
                setWeather(response.data);
              })
              .catch(error => {
                console.error('Error fetching weather data:', error);
              });
          }
        }, [city]);
      
        return (
          <div>
            <h1>Weather App</h1>
            <input
              type="text"
              placeholder="Enter city name"
              value={city}
              onChange={(e) => setCity(e.target.value)}
            />
            {weather && (
              <div>
                <p>Temperature: {weather.main.temp} K</p>
                <p>Weather: {weather.weather[0].description}</p>
              </div>
            )}
          </div>
        );
      }
      
      export default Weather;
      
    • App.js:主组件
      import React from 'react';
      import Weather from './Weather';
      
      function App() {
        return (
          <div className="App">
            <Weather />
          </div>
        );
      }
      
      export default App;
      

建议

  • 定期回顾:每周花时间回顾本周所学内容,确保知识点牢固掌握。
  • 参与社区:加入React相关的论坛、Slack群组或Discord服务器,与其他开发者交流心得。
  • 阅读源码:尝试阅读一些简单的React库的源码,提高代码理解和分析能力。

希望这个学习计划能够帮助你系统地学习React基础,并通过实践项目巩固所学知识。祝你学习顺利!


你可以将上述Markdown内容复制到任何支持Markdown的编辑器或平台中,以便于查看和使用。

标签:学习,react,Component,return,React,阶段,组件,import
From: https://blog.csdn.net/MikeaLi/article/details/142966786

相关文章

  • 基于深度学习的智能传感与监控
    基于深度学习的智能传感与监控技术通过利用传感器收集数据,并使用深度学习算法对这些数据进行分析,以实现智能化的监控和管理。这些系统广泛应用于智慧城市、工业自动化、医疗健康、农业、安防等领域,提升了数据分析的精确度、实时性和自动化水平。1.智能传感概述智能传感技术......
  • 基于深度学习的基于视觉的机器人导航
    基于深度学习的视觉机器人导航是一种通过深度学习算法结合视觉感知系统(如摄像头、LiDAR等)实现机器人在复杂环境中的自主导航的技术。这种方法使机器人能够像人类一样使用视觉信息感知环境、规划路径,并避开障碍物。与传统的导航方法相比,深度学习模型能够在动态环境中表现出更强......
  • java学习10.15
    今天学习了java图形化编程importjava.awt.*;importjava.awt.event.*;publicclassFramePractice{publicstaticvoidmain(String[]args){Frameframe=newFrame();//Frame是窗体,我们只需要创建这样一个对象就可以了,这样就会直接创建一个新的窗口......
  • AI核心技术-机器学习6大应用场景分析
    机器学习6大应用场景分析数据分析——量化交易——风控领域——工业制造——特征工程——数据挖掘1、机器学习在数据分析领域机器学习可不仅仅就是模型,还包括了处理数据的一套流水线数据处理方法较多基本根据业务选择合适的方法套路相对固定,一套脚本走天下这是建模前必须......
  • 基于常青藤算法优化深度混合核极限学习机(IVY-DHKELM)的数据多变量回归预测 Matlab (
    [原创]基于常青藤算法优化深度混合核极限学习机(IVY-DHKELM)的数据多变量回归预测Matlab(多输入单输出)程序已经调试好,无需更改代码替换数据集即可运行!!!数据格式为excel!①将多项式核函数与高斯核函数加权结合,构造出新的混合核函数,并引入自动编码器对极限学习机进行改进,建......
  • 基于深度混合核极限学习机DHKELM的数据多特征分类预测 Matlab (多输入单输出)
    基于深度混合核极限学习机DHKELM的数据多特征分类预测Matlab(多输入单输出)程序已经调试好,无需更改代码替换数据集即可运行!!!数据格式为excel!①将多项式核函数与高斯核函数加权结合,构造出新的混合核函数,并引入自动编码器对极限学习机进行改进,建立DHKELM模型。该想法创新性......
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)3.5-3.
    目录第四门课卷积神经网络(ConvolutionalNeuralNetworks)第三周目标检测(Objectdetection)3.5BoundingBox预测(Boundingboxpredictions)3.6交并比(Intersectionoverunion)第四门课卷积神经网络(ConvolutionalNeuralNetworks)第三周目标检测(Objectdetection......
  • 10/15AWT组件学习(1)
    AWT组件学习(1)监听器常用组件布局publicstaticvoidmain(String[]args){Frameframe=newFrame();//Frame是窗体,我们只需要创建这样一个对象就可以了,这样就会直接创建一个新的窗口frame.setSize(500,300);//可以使用setSize方法设定窗体大小frame.setVisible(t......
  • 专利申请的流程是怎样的?需经哪几个阶段?最快多长时间能获得通过?
    发明专利的主要流程:受理、初步审查、专利公布(申请日起18个月)、提出实质审查请求(申请日起3年内)、实质审查、授权或驳回。通常审查周期:1~2年(从实质审查开始到结束)其他程序:提前公开优先审查(部分技术领域)--1年快速预审(部分地区及技术领域)-2、3个月实用新型与外观设计的主要......
  • 自然语言处理之语音识别:Convolutional Neural Networks (CNN):深度学习与神经网络基础
    自然语言处理之语音识别:ConvolutionalNeuralNetworks(CNN):深度学习与神经网络基础深度学习与神经网络基础subdir1.1:神经网络的基本概念神经网络是一种模仿人脑神经元结构的计算模型,用于处理复杂的数据模式识别和预测问题。它由输入层、隐藏层和输出层组成,每一层......