前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【React入门】实现todolist功能

【React入门】实现todolist功能

作者头像
程序小工
发布2018-09-12 15:29:51
1.4K0
发布2018-09-12 15:29:51
举报
文章被收录于专栏:程序小工程序小工

摘要

作为一名 PHP 初级的程序员,目前尚且处于学习 PHP 业务逻辑实现到日常工作中的阶段,但是由于现在想要搭建一个满意的个人博客,并且尝试过很多 hexo 主题后总是会对主题的某些或某个部分不太满意, 所以为了以后可以自己实现相应页面的开发,所以还是想着能够学点前端框架的知识,为以后成为全栈工程师做准备。目前比较流行的前端框架主要有React.jsVue.js,因为当前公司使用的是React.js开发的,所以也选择React作为学习对象。

开发环境准备

安装 node.js

建议在 React 中使用 CommonJS 模块系统,比如 browserify 或 webpack(推荐使用)。

使用淘宝定制的 cpm 命令行工具代替默认的 npm

npm install -g cnpm --registry=https://registry.npm.taobao.org
npm config set registry https://registry.npm.taobao.org

这样就可以使用 cnpm 命令来代替 npm 进行安装模块了:

cnpm install [name]

创建 react 应用

cnpm install -g create-react-app
cd todolist-react/
npm start

目录结构

  • 原始结构
todolist-react/
    node_modules/
    public/
        favicon.ico
        index.html
        manifest.json
    src/
        App.css
        App.js
        App.test.js
        index.css
        index.js
        logo.svg
    README.md
    package-lock.json
    package.json
    .gitignore

代码实现

准备工作

(1)编写 todolist 功能时,对默认项目的文件进行删减,只需要保留主要的文件即可。

App.js重命名为TodoList.js,创建文件TodoItem.js

  • 精简后的文件结构
todolist-react/
    node_modules/
    public/
        favicon.ico
        index.html
        manifest.json
    src/
        TodoList.js
        TodoItem.js
        index.js
    README.md
    package-lock.json
    package.json
    .gitignore

(2)组件拆分

React 的组件开发意思是将页面上每个部分作为一个组件,然后通过每个组件之间的通信,进行数据交互,实现完整页面的渲染。

TodoList 功能包括用户输入部分和 List 清单部分,所以将整个功能拆分为两部分。用户输入部分为TodoList; List清单部分为TodoItem

(3)index.js代码实现

import React from "react";
import ReactDOM from "react-dom";

// 引入TodoList组件
import TodoList from "./TodoList";

// 获取TodoList返回的数据,并渲染到id为root的元素节点中
ReactDOM.render(<TodoList />, document.getElementById("root"));

(4)TodoList.js代码实现

// 引入React类,引入React.Component组件类
import React, { Component} from 'react';
// 从当前目录下的TodoItem.js中引入TodoItem子组件
import TodoItem from './TodoItem';

// 组件定义和实现
class TodoList extends Component {
  // 通过render() 方法渲染页面数据
  render() {
    return (
      <div>
        <div>
          <input value={this.state.inputValue} onChange={this.handleInputChange}/>
          <button onClick={this.handleBtnClick}>add</button>
        </div>
        <ul>
        {
            return (
                this.state.list.map((item, index) => {
                    return <TodoItem key={index} content={item} index={index} delete={this.handleDelete}/>
                })
            )
        }
        </ul>
      </div>
    );
  }
}

未完待续

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发环境准备
    • 安装 node.js
      • 创建 react 应用
        • 目录结构
        • 代码实现
          • 准备工作
            • 未完待续
            相关产品与服务
            命令行工具
            腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档