美文网首页
markdown日记本项目分析与实现

markdown日记本项目分析与实现

作者: LOVE小狼 | 来源:发表于2016-12-12 21:20 被阅读90次

项目概述

该项目为react练习demo,源代码点击此处,主要涉及内容

  1. 组件props与组件样式className
  2. 组件内传多个子节点问题
  3. 通过ref使用真实dom
  4. state状态变更渲染组件
  5. props属性校验

以上为react中基础部分,项目设计图如下所示,具体项目展示可点此处

内容展示
点击编辑按钮后,右侧展示组件会变为内容编辑组件,这里可知需要一个boolean类型值,根据该值决定展示内容组件还是编辑内容组件
内容编辑

组件设计

首先编写组件样式,然后根据组件功能决定state结构

样式部分

根据设计图可将组件分为如下几个部分

  1. app组件(即父组件)
    包含列表组件与右侧展示与编辑部分
  2. 列表组件
    CreateBar与列表项ListItem
  3. 展示组件与编辑组件

即一共6种组件

state数据结构

说起state这里简要阐述一下与props的区别

  • state
    每个组件都有自己的state,它是一个动态的,通过setState(data,callback)可将data与原state 合并,使用该方法后组件会重新render达到更新渲染组件的目的
  • props
    props仅为组件最初载入时传入的参数,载入后组件内容会根据state变化而再次render,此时state可能会作为props传入其他组件中导致其他组件再次渲染。

接下来设计markdown中state数据结构,根据最小组件state优化出最终state结构

  1. CreateBar
    该组件仅需要点击事件函数对象createItem
  2. ListItem
    该组件需要item中的title,time,selectItem函数对象
  3. 展示组件部分
    item的title,content,按钮事件editItem与deleteItem
  4. 编辑组件部分
    item的title,content,按钮事件saveItem与cancelItem

将所有state与事件函数统一放在app组件内,便于统一管理

组件state
  • editing用于判断显示展示组件还是编辑组件
  • selectedId用于事件内部操作items数组
  • items数组存储所有日记记录

组件交互

父组件一共有6个事件函数

  • selectItem(id)
    修改state中selectedId与editing的值
  • saveItem(item)
    创建新日记:在items中添加新item(需创建新的uuid与time)
    修改旧日记:在items中找与到item.id相同的记录并覆盖title与content
  • deleteItem(id)
    从items中删除对应id的item
  • createItem()
    当前selectedId设为null,editing设为true
  • editItem(id)
    修改item时依旧显示当前selectedItem同时editing改为编辑状态
  • cancelItem()
    取消编辑状态editing:false

相关文章

  • markdown日记本项目分析与实现

    项目概述 该项目为react练习demo,源代码点击此处,主要涉及内容 组件props与组件样式className...

  • 1. 概述

    声明:本文是对 Markdown 语法说明(简体中文版)的转载与临摹。 宗旨 Markdown 的目标是实现「易读...

  • Adventure项目

    一、项目概述 1. 成果预览 分析概述:本文是对Adventure项目的总结,记录项目分析与实现过程,主要任务是对...

  • Markdown使用说明

    Markdown概述 宗旨 Markdown 的目标是实现「易读易写」。Markdown 的特点就是,让写作变得更...

  • Django应用 markdown编辑器

    简单实现 安装python的markdown模块sudo pip install markdown 编辑模型 注意...

  • MarkDown学习记录

    Markdown概述 宗旨 Markdown 的目标是实现易读易写。Markdown 让写作变得更简单,使我们不用...

  • Markdown简单教程

    Markdown简介 引用一段Markdown中文文档的文字。 宗旨Markdown 的目标是实现「易读易写」。 ...

  • Markdown学习-认知

    什么是Markdown Markdown 是一种轻量级标记语言,目标是实现「易读易写」。 Markdown的身世 ...

  • markdown 使用介绍

    markdown宗旨Markdown 的目标是实现「易读易写」。Markdown 是一种轻量级标记语言,它允许人们...

  • react实现markdown

    一、概要 最近想实现个人博客,博客文章想采用markdown来进行编辑。参考了网上一些markdown的实现,要么...

网友评论

      本文标题:markdown日记本项目分析与实现

      本文链接:https://www.haomeiwen.com/subject/bstvmttx.html