当前位置: 首页 > news >正文

react-hooks 实现简单的评论list

react 16.7.0-alpha.2版本中推出了新版本的react-hook,详细的可以参照官方文档, 下面我讲用react-hooks实现简单的评论list

效果图:

demo整体架构使用react 16.8 + webpack + antd-mobile

源代码:

  • 创建输入框hooks
     
     const [list, setList] = useState([{name: 'mark'}, {name: 'joan'}]);
     const [value, setValue] = useState('');
    
     <List style={{margin:'10px auto'}}>
        <InputItem value={value} placeholder="请输入详细信息" onChange={value => setValue(value)} /> 
      </List>
    复制代码
  • Button
     const publish = () => {
        setList(list.concat([{name:value}]));
        setValue('');
     }
    
     <Button type='primary' onClick={()=> publish()}>评论</Button>
    复制代码
  • list
     const removeTodo = index => {
        const todoList = [...list];
        todoList.splice(index,1);
        setList(todoList);
      }
     <ul>
        {list.map((item,index) => <li key={index}>{item.name} <span onClick={() => removeTodo(index)}>删除</span></li>)}
     </ul>
复制代码

完整代码

import React, { useState, useEffect} from 'react';
import {Button, InputItem, List} from 'antd-mobile';

const Home = () => {
  const [list, setList] = useState([{name: 'mark'}, {name: 'joan'}]);
  const [value, setValue] = useState('');
  const removeTodo = index => {
    const todoList = [...list];
    todoList.splice(index,1);
    setList(todoList);
  }
  const publish = () => {
    setList(list.concat([{name:value}]));
    setValue('');
  }
  useEffect(()=>{
    console.log('list变化了');
  }, [list])
  return (
    <div style={{margin: "0 30px"}}>
      <List style={{margin:'10px auto'}}>
        <InputItem value={value} placeholder="请输入详细信息" onChange={value => setValue(value)} /> 
      </List>
      <Button type='primary' onClick={()=> publish()}>评论</Button>
      <ul>
        {list.map((item,index) => <li key={index}>{item.name} <span onClick={() => removeTodo(index)}>删除</span></li>)}
      </ul>
    </div>
  )
}
复制代码

这里只用了useState 和 useEffect 也是最常用的两个hook ,当然远远不止这两个hook, 大家可以参考官方文档查看更多。

转载于:https://juejin.im/post/5c8670c2e51d45206776888b

相关文章:

  • Proxy-Go v7.2 发布,一个端口一键开启 http(s)\ss\socks 服务
  • Cordova + Vue 实现点击两次退出应用
  • 解密敏捷自动化测试
  • JavaScript到底是面向对象还是基于对象?
  • JDBC的CRUD操作之PreparedStatement的保存操作
  • (译)计算距离、方位和更多经纬度之间的点
  • 4.11Python数据处理篇之Matplotlib系列(十一)---图例,网格,背景的设置
  • 苹果尝试转型手机可能不再是核心业务
  • selenium 之 Css Selector
  • 保守的国美再一次进击社交电商,前途未卜?
  • 自动化办公:python 操作Excel
  • 基于房源的画像分析
  • 防止视频资源被下载
  • 第一周 IP通信基础学习回顾
  • Electron系列文章-主进程与渲染进程
  • (三)从jvm层面了解线程的启动和停止
  • 【知识碎片】第三方登录弹窗效果
  • Angular数据绑定机制
  • C语言笔记(第一章:C语言编程)
  • Java反射-动态类加载和重新加载
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Node项目之评分系统(二)- 数据库设计
  • Vue组件定义
  • 将回调地狱按在地上摩擦的Promise
  • 浏览器缓存机制分析
  • 移动端解决方案学习记录
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • #14vue3生成表单并跳转到外部地址的方式
  • #ifdef 的技巧用法
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (转)原始图像数据和PDF中的图像数据
  • .mysql secret在哪_MySQL如何使用索引
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net 6.0 处理跨域的方式
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net6使用WebSocket与前端进行通信
  • .netcore 获取appsettings
  • .NET的微型Web框架 Nancy
  • .net下简单快捷的数值高低位切换
  • ??在JSP中,java和JavaScript如何交互?
  • [ C++ ] STL_list 使用及其模拟实现
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [C++随笔录] 红黑树
  • [CareerCup][Google Interview] 实现一个具有get_min的Queue
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!