React 基础阶段学习计划

金歌  金牌会员 | 2024-10-19 22:41:23 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 862|帖子 862|积分 2586

React 基础阶段学习计划

目的



  • 可以或许创建和利用React组件。
  • 理解并利用State和Props。
  • 掌握事件处理惩罚和表单处理惩罚。
学习内容

情况搭建

安装Node.js和npm


  • 访问 Node.js官网 下载并安装最新版本的Node.js。
  • 打开终端或命令行工具,输入 node -v 和 npm -v 检查是否安装乐成。
利用Create React App搭建项目


  • 打开终端,输入以下命令创建一个新的React项目:
    1. npx create-react-app my-app
    复制代码
  • 进入项目目录:
    1. cd my-app
    复制代码
  • 启动开辟服务器:
    1. npm start
    复制代码
核心概念

JSX语法



  • JSX是一种JavaScript的语法扩展,允许你在JavaScript中编写类似HTML的元素。
  • 示例:
    1. import React from 'react';
    2. function HelloWorld() {
    3.   return <h1>Hello, World!</h1>;
    4. }
    5. export default HelloWorld;
    复制代码
组件



  • 函数组件:简朴的组件,通常用于展示数据。
    1. import React from 'react';
    2. function Greeting(props) {
    3.   return <h1>Hello, {props.name}!</h1>;
    4. }
    5. export default Greeting;
    复制代码
  • 类组件:功能更强大的组件,可以管理状态。
    1. import React, { Component } from 'react';
    2. class Counter extends Component {
    3.   constructor(props) {
    4.     super(props);
    5.     this.state = { count: 0 };
    6.   }
    7.   increment = () => {
    8.     this.setState({ count: this.state.count + 1 });
    9.   }
    10.   render() {
    11.     return (
    12.       <div>
    13.         <p>Count: {this.state.count}</p>
    14.         <button onClick={this.increment}>Increment</button>
    15.       </div>
    16.     );
    17.   }
    18. }
    19. export default Counter;
    复制代码
State和Props



  • State:组件内部的状态,可以通过this.setState方法更新。
  • Props:父组件传递给子组件的属性。
    1. import React from 'react';
    2. // 子组件
    3. function ChildComponent(props) {
    4.   return <p>{props.message}</p>;
    5. }
    6. // 父组件
    7. class ParentComponent extends React.Component {
    8.   constructor(props) {
    9.     super(props);
    10.     this.state = { message: 'Hello from Parent' };
    11.   }
    12.   render() {
    13.     return <ChildComponent message={this.state.message} />;
    14.   }
    15. }
    16. export default ParentComponent;
    复制代码
事件处理惩罚



  • 在React中,事件处理惩罚函数通常绑定到组件的方法上。
    1. import React, { Component } from 'react';
    2. class EventHandling extends Component {
    3.   handleClick = () => {
    4.     alert('Button clicked!');
    5.   }
    6.   render() {
    7.     return (
    8.       <button onClick={this.handleClick}>
    9.         Click me
    10.       </button>
    11.     );
    12.   }
    13. }
    14. export default EventHandling;
    复制代码
表单处理惩罚



  • React中的表单元素默认是受控组件,即它们的值由React组件的状态控制。
    1. import React, { Component } from 'react';
    2. class FormExample extends Component {
    3.   constructor(props) {
    4.     super(props);
    5.     this.state = { name: '' };
    6.     this.handleChange = this.handleChange.bind(this);
    7.     this.handleSubmit = this.handleSubmit.bind(this);
    8.   }
    9.   handleChange(event) {
    10.     this.setState({ name: event.target.value });
    11.   }
    12.   handleSubmit(event) {
    13.     alert('A name was submitted: ' + this.state.name);
    14.     event.preventDefault();
    15.   }
    16.   render() {
    17.     return (
    18.       <form onSubmit={this.handleSubmit}>
    19.         <label>
    20.           Name:
    21.           <input type="text" value={this.state.name} onChange={this.handleChange} />
    22.         </label>
    23.         <button type="submit">Submit</button>
    24.       </form>
    25.     );
    26.   }
    27. }
    28. export default FormExample;
    复制代码
组件生命周期



  • 生命周期方法:组件在不同阶段会触发不同的生命周期方法。

    • componentDidMount:组件挂载后调用。
    • componentDidUpdate:组件更新后调用。
    • componentWillUnmount:组件卸载前调用。
    1. import React, { Component } from 'react';
    2. class LifecycleExample extends Component {
    3.   componentDidMount() {
    4.     console.log('Component did mount');
    5.   }
    6.   componentDidUpdate(prevProps, prevState) {
    7.     console.log('Component did update');
    8.   }
    9.   componentWillUnmount() {
    10.     console.log('Component will unmount');
    11.   }
    12.   render() {
    13.     return <div>Lifecycle Example</div>;
    14.   }
    15. }
    16. export default LifecycleExample;
    复制代码

实践项目

个人博客


  • 创建项目
    1. npx create-react-app personal-blog
    2. cd personal-blog
    3. npm start
    复制代码
  • 创建组件

    • Header.js:头部组件
      1. import React from 'react';
      2. function Header() {
      3.   return <header><h1>My Personal Blog</h1></header>;
      4. }
      5. export default Header;
      复制代码
    • PostList.js:文章列表组件
      1. import React from 'react';
      2. const posts = [
      3.   { id: 1, title: 'First Post', content: 'This is the first post.' },
      4.   { id: 2, title: 'Second Post', content: 'This is the second post.' },
      5. ];
      6. function PostList() {
      7.   return (
      8.     <div>
      9.       {posts.map(post => (
      10.         <div key={post.id}>
      11.           <h2>{post.title}</h2>
      12.           <p>{post.content}</p>
      13.         </div>
      14.       ))}
      15.     </div>
      16.   );
      17. }
      18. export default PostList;
      复制代码
    • App.js:主组件
      1. import React from 'react';
      2. import Header from './Header';
      3. import PostList from './PostList';
      4. function App() {
      5.   return (
      6.     <div className="App">
      7.       <Header />
      8.       <PostList />
      9.     </div>
      10.   );
      11. }
      12. export default App;
      复制代码

气候应用


  • 创建项目
    1. npx create-react-app weather-app
    2. cd weather-app
    3. npm start
    复制代码
  • 安装axios
    1. npm install axios
    复制代码
  • 创建组件

    • Weather.js:气候组件
      1. import React, { useState, useEffect } from 'react';
      2. import axios from 'axios';
      3. function Weather() {
      4.   const [weather, setWeather] = useState(null);
      5.   const [city, setCity] = useState('');
      6.   useEffect(() => {
      7.     if (city) {
      8.       axios.get(`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=YOUR_API_KEY`)
      9.         .then(response => {
      10.           setWeather(response.data);
      11.         })
      12.         .catch(error => {
      13.           console.error('Error fetching weather data:', error);
      14.         });
      15.     }
      16.   }, [city]);
      17.   return (
      18.     <div>
      19.       <h1>Weather App</h1>
      20.       <input
      21.         type="text"
      22.         placeholder="Enter city name"
      23.         value={city}
      24.         onChange={(e) => setCity(e.target.value)}
      25.       />
      26.       {weather && (
      27.         <div>
      28.           <p>Temperature: {weather.main.temp} K</p>
      29.           <p>Weather: {weather.weather[0].description}</p>
      30.         </div>
      31.       )}
      32.     </div>
      33.   );
      34. }
      35. export default Weather;
      复制代码
    • App.js:主组件
      1. import React from 'react';
      2. import Weather from './Weather';
      3. function App() {
      4.   return (
      5.     <div className="App">
      6.       <Weather />
      7.     </div>
      8.   );
      9. }
      10. export default App;
      复制代码

建议



  • 定期回顾:每周花时间回顾本周所学内容,确保知识点牢固掌握。
  • 参与社区:加入React相关的论坛、Slack群组或Discord服务器,与其他开辟者交换心得。
  • 阅读源码:尝试阅读一些简朴的React库的源码,进步代码理解和分析能力。
希望这个学习计划可以或许资助你系统地学习React基础,并通过实践项目巩固所学知识。祝你学习顺遂!
  1. 你可以将上述Markdown内容复制到任何支持Markdown的编辑器或平台中,以便于查看和使用。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表