前端学习:React快速入门TodoList实例

简介: 前端学习:React快速入门TodoList实例

安装环境

Node.js https://nodejs.org/

reactjs https://reactjs.org/


更换npm淘宝源


$ npm config set registry https://registry.npm.taobao.org
-- 配置后可通过下面方式来验证是否成功
$ npm config get registry

环境检查

windows shift+右键 在此处打开命令行窗口


$ node -v
$ npm -v

新建项目

$ npx create-react-app my-app
$ cd my-app
$ npm start

http://localhost:3000/


精简项目

src目录下以下文件都可以删除


registerServiceWorker.js
index.css
App.test.js
App.css
logo.svg

组件

网页中的一部分, 一般采用大写字母开头

定义一个组件需要继承React.Component

1. 必须有render

2. 花括号中可以写js表达式

3. 支持jsx语法,可以直接使用标签结构

4. render函数只能返回一个标签内容

5. 父组件通过属性给子组件传递参数

6. 子组件通过props接收父组件传递过来的参数

7. 思想:面向数据编程

8. 子组件如果要和父组件通讯,要调用父组件传递过来的方法

9. css样式类关键词使用className=”value”, style={{key: “value”}}


代码实例

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import TodoList from './TodoList';
import "./style.css"
ReactDOM.render(<TodoList />, document.getElementById('root'));

TodoList.js

import React, { Component, Fragment } from 'react';
import TodoItem from './TodoItem.js';
// 定义一个组件
class TodoList extends Component {
  // 构造函数初始化
  constructor(props) {
    super(props);
    this.state = {
      list: [],
      inputValue: ''
    };
    // 代码优化
    this.handleClick = this.handleClick.bind(this);
    this.handleDelete = this.handleDelete.bind(this);
    this.handleInput = this.handleInput.bind(this);
  }
  handleClick() {
    this.setState({
      // 展开运算符 es6
      list: [...this.state.list, this.state.inputValue],
      inputValue: ''
    })
  }
  handleInput(e) {
    this.setState({
      inputValue: e.target.value
    })
  }
  handleDelete(index) {
    // 拷贝一个副本出来,操作副本
    const list = [...this.state.list];
    list.splice(index, 1)
    this.setState({
      list: list
    })
  }
  getItemListByThis(index, item){
    return (
      <li key={index} onClick={this.handleItemClikc.bind(this, index)}> {item}</li>
    )
  }
  getTodoItems(){
      return (this.state.list.map((item, index)=>{
                return (
                  <TodoItem 
                    delete={this.handleDelete} 
                    key={index} 
                    index={index} 
                    content={item} 
                  />
                )
                }))}
  // 必须有render
  render() {
  // 花括号中可以写js表达式
    return (
      // jsx语法,可以直接使用标签结构
      <Fragment>
      <div> 
        <input type="text" value={this.state.inputValue} onChange={this.handleInput.bind(this)}/>
        <button style={{color: 'white'}} className="red-btn" onClick={this.handleClick}>点击</button>
      </div>
      <ul>
          {  this.getTodoItems()  }
      </ul>
      </Fragment>
    );
  }
}
export default TodoList;  //导出才可以导入

TodoItem.js


import React, {Component} from "react";
class TodoItem extends Component{
    constructor(props) {
        super(props);
        this.handleClick = this.handleClick.bind(this);
    }
    //子组件接受参数props
    handleClick() {
        this.props.delete(this.props.index)
    }
    render() {
        const content = this.props.content
        return (
            <div onClick={this.handleClick}> {content} </div>
        );
    }
}
export default TodoItem;

style.css


.red-btn{
    background: red;
}

github地址:https://github.com/mouday/HTML/tree/master/react_demo

相关文章
|
13天前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
42 9
|
28天前
|
前端开发 JavaScript
React学习之——条件渲染
【10月更文挑战第16天】React 中没有像Vue中v-if这种指令。React 中的条件渲染和 JavaScript 中的一样,使用 JavaScript 运算符 if 或者条件运算符去创建元素来表现当前的状态,然后让 React 根据它们来更新 UI。
|
1月前
|
前端开发
深入解析React Hooks:构建高效且可维护的前端应用
本文将带你走进React Hooks的世界,探索这一革新特性如何改变我们构建React组件的方式。通过分析Hooks的核心概念、使用方法和最佳实践,文章旨在帮助你充分利用Hooks来提高开发效率,编写更简洁、更可维护的前端代码。我们将通过实际代码示例,深入了解useState、useEffect等常用Hooks的内部工作原理,并探讨如何自定义Hooks以复用逻辑。
|
1月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
38 0
|
14天前
|
前端开发 开发者 C++
独家揭秘:前端大牛们如何高效学习新技术,保持竞争力!
【10月更文挑战第31天】前端技术飞速发展,如何高效学习新技术成为关键。本文通过对比普通开发者与大牛们的策略,揭示了高效学习的秘诀:明确目标、主动探索、系统资源、实践应用和持续学习。通过这些方法,大牛们能更好地掌握新技术,保持竞争力。示例代码展示了如何通过实践加深理解。
32 4
|
1月前
|
前端开发 数据管理 编译器
引领前端未来:React 19的重大更新与实战指南🚀
React 19 即将发布,带来一系列革命性的新功能,旨在简化开发过程并显著提升性能。本文介绍了 React 19 的核心功能,如自动优化重新渲染的 React 编译器、加速初始加载的服务器组件、简化表单处理的 Actions、无缝集成的 Web 组件,以及文档元数据的直接管理。这些新功能通过自动化、优化和增强用户体验,帮助开发者构建更高效的 Web 应用程序。
99 1
引领前端未来:React 19的重大更新与实战指南🚀
|
18天前
|
前端开发 JavaScript Android开发
前端框架趋势:React Native在跨平台开发中的优势与挑战
【10月更文挑战第27天】React Native 是跨平台开发领域的佼佼者,凭借其独特的跨平台能力和高效的开发体验,成为许多开发者的首选。本文探讨了 React Native 的优势与挑战,包括跨平台开发能力、原生组件渲染、性能优化及调试复杂性等问题,并通过代码示例展示了其实际应用。
45 2
|
19天前
|
前端开发 JavaScript 安全
学习如何为 React 组件编写测试:
学习如何为 React 组件编写测试:
34 2
|
20天前
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】React与Vue:前端框架的巅峰对决与选择策略
|
20天前
|
前端开发 JavaScript 开发者
“揭秘React Hooks的神秘面纱:如何掌握这些改变游戏规则的超能力以打造无敌前端应用”
【10月更文挑战第25天】React Hooks 自 2018 年推出以来,已成为 React 功能组件的重要组成部分。本文全面解析了 React Hooks 的核心概念,包括 `useState` 和 `useEffect` 的使用方法,并提供了最佳实践,如避免过度使用 Hooks、保持 Hooks 调用顺序一致、使用 `useReducer` 管理复杂状态逻辑、自定义 Hooks 封装复用逻辑等,帮助开发者更高效地使用 Hooks,构建健壮且易于维护的 React 应用。
28 2