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

相关文章
|
Web App开发 缓存 前端开发
前端框架react研究
前端框架react研究
|
Web App开发 前端开发 JavaScript
前端框架react研究
摘要:      最近公司要做一个嵌套在app中的应用,考虑着用Facebook的react来开发view,所以就研究了下。下面是我在开发中遇到的坑,希望能给你帮助。 项目地址:https://github.com/baixuexiyang/react Issue:https://github.com/baixuexiyang/react/issues 欢迎star和fork! react优势: 仅仅只要表达出你的应用程序在任一个时间点应该长的样子,然后当底层的数据变了,React 会自动处理所有用户界面的更新。
829 0
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
800 0
|
存储 前端开发 JavaScript
【第34期】一文学会React组件传值
【第34期】一文学会React组件传值
214 0
|
前端开发
【第31期】一文学会用React Hooks组件编写组件
【第31期】一文学会用React Hooks组件编写组件
221 0
|
存储 前端开发 JavaScript
【第29期】一文学会用React类组件编写组件
【第29期】一文学会用React类组件编写组件
187 0
|
前端开发 开发者
【第26期】一文读懂React组件编写方式
【第26期】一文读懂React组件编写方式
189 0
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
444 0
|
存储 前端开发 中间件
React组件间的通信
React组件间的通信
159 1
|
前端开发 JavaScript API
React组件生命周期
React组件生命周期
253 1