前端学习: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

相关文章
|
2月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
transition过渡属性 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。 但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化, 让效果显得更加细腻。简单点说,就是通过鼠标经过、获得焦点,被点击或对元素任何改变中触发, 并平滑地以动画效果改变CSS的属性值。 在CSS中创建简单的过渡效果可以从以下几个步骤来实现: 在默认样式中声明元素的初始状态样式; 声明过渡元素最终状态样式,比如悬浮状态; 在默认样式中通过添加
229 1
|
2月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
transform变形 css3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的 功能。 CSS3的变形功能可以对HTML组件执行位移、旋转、缩放、倾斜4种几何变换,这样的变换可以控制HTML组件 呈现出丰富的外观。 借助于位移、旋转、缩放、倾斜这4种几何变换,CSS3提供了transition动画。 transition动画比较简单,只要指定HTML组件的哪些CSS属性需要使用动画效果来执行变化,并指定动画时间,就可保证动画播放。 比transitio
178 1
|
8月前
|
移动开发 前端开发 JavaScript
Vue与React两大前端框架的主要差异点
以上就是Vue和React的主要差异点,希望对你有所帮助。在选择使用哪一个框架时,需要根据项目的具体需求和团队的技术栈来决定。
505 83
|
10月前
|
存储 前端开发 JavaScript
React Native 核心技术知识点快速入门
大家好,我是 V 哥。React Native 是 Facebook 开发的开源框架,使用 JavaScript 和 React 构建跨平台移动应用。本文将介绍其核心技术,帮助初学者快速入门。内容涵盖环境搭建、组件(函数与类组件)、Props、State、样式、导航及性能优化等关键知识点。通过实践这些技术,你将能够创建高性能的 iOS 和 Android 应用。关注 V 哥爱编程,一起探索全栈开发之路。
417 0
|
9月前
|
缓存 前端开发 JavaScript
学习React的最佳实践有哪些?
学习React的最佳实践有哪些?
317 86
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
263 9
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
2379 39
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
|
9月前
|
前端开发 JavaScript API
如何快速学习React?
如何快速学习React?
267 1
|
11月前
|
Dart 前端开发 架构师
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
563 26
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
858 9
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生