1.商品列表页面结构

  1. <div id="page-wrapper">
  2.              <PageTitle title="商品列表">
  3.                  <div className="page-header-right">
  4.                      <Link to="/product/save" className="btn btn-primary">
  5.                          <i className="fa fa-plus"></i>
  6.                          <span>添加商品</span>
  7.                      </Link>
  8.                  </div>
  9.              </PageTitle>
  10.              <ListSearch onSearch={(searchType, searchKeyword) => {this.onSearch(searchType, searchKeyword)}} />
  11.              <TableList tableHeads={tableHeads}>
  12.                  {
  13.                      this.state.list.map((product, index) => {
  14.                          return (
  15.                              <tr key={index}>
  16.                                  <td>{product.id}</td>
  17.                                  <td>
  18.                                      <p>{product.name}</p>
  19.                                      <p>{product.subtitle}</p>
  20.                                  </td>
  21.                                  <td>¥{product.price}</td>
  22.                                  <td>
  23.                                      <span>{product.status == 1 ? '在售' : '已下架'}</span>
  24.                                      <button className="btn btn-xs btn-warning"
  25.                                          onClick={(e) => {this.onSetProductStatus(e, product.id, product.status)}}>{product.status == 1 ? '下架' : '上架'}</button>
  26.                                  </td>
  27.                                  <td>
  28.                                      <Link className="opear" to={`/product/detail/${product.id}`}>详情</Link>
  29.                                      <Link className="opear" to={`/product/save/${product.id}`}>编辑</Link>
  30.                                  </td>
  31.                              </tr>
  32.                          );
  33.                      })
  34.                  }
  35.              </TableList>
  36.              <Pagination current={this.state.pageNum}
  37.                  total={this.state.total}
  38.                  onChange={(pageNum) => this.onPageNumChange(pageNum)}/>
  39.          </div>

2.请求后台数据

  1. this.state = {
  2.            list : [],
  3.            pageNum : 1,
  4.            listType : 'list'
  5.        };
  6. componentDidMount(){
  7.      this.loadProductList();
  8.    }
  9.    // 加载商品列表
  10.    loadProductList(){
  11.        let listParam = {};
  12.        listParam.listType = this.state.listType;
  13.        listParam.pageNum = this.state.pageNum;
  14.        //如果是搜索的话需要传入搜索类型和搜索关键字
  15.        if(this.state.listType === 'search'){
  16.            listParam.searchType=this.state.searchType;
  17.            listParam.keyword = this.state.searchKeyword;
  18.        }
  19.        _product.getProductList(listParam).then( res => {
  20.            this.setState(res);
  21.        }, errMsg => {
  22.            this.setState({
  23.                list : []
  24.            })
  25.            _mm.errorTips(errMsg);
  26.        })
  27.    }

3.当页码切换时,更新state里边pageNum的值

  1. //更新页码
  2.    onPageNumChange(pageNum){
  3.       //获取当前页,然后更改this.state里边的pageNum,成功以后调用this.loadProductList()方法
  4.       this.setState({
  5.          pageNum:pageNum
  6.       }, () => {
  7.           this.loadProductList();
  8.       });
  9.    }

4.改变商品的上下架状态

  1. //改变商品的上下架状态
  2.     //1是上架,2是下架
  3.     onSetProductStatus(e,productId,currentStatus){
  4.         let newStatus = currentStatus == 1 ? 2 : 1;
  5.         // 1是上架 ,2 是下架 确认应该是说相反的
  6.         let confirmTips=currentStatus == 1 ? "确认下架该商品吗" : "确认上架该商品吗"
  7.         if(window.confirm(confirmTips)){
  8.             _product.setProductStatus(
  9.                 {
  10.                     productId:productId,
  11.                     status:newStatus
  12.                 }
  13.             ).then(res => {
  14.                 _mm.successTips(res);
  15.                 this.loadProductList();
  16.             }, errorMsg => {
  17.                 _mm.errorTips(res);
  18.  
  19.             });
  20.         }
  21.     }

React后台管理系统-商品管理列表组件的更多相关文章

  1. React后台管理系统-商品列表搜索框listSearch组件

    1.商品列表搜索框 2.搜索框页面的结构为 <div className="row search-wrap">               <div classN ...

  2. React后台管理系统-订单管理

    1.订单管理页面和商品管理页面类似,都是一个搜索组件+列表组件 2.搜索框search组件 import React from 'react';   class ListSearch extends ...

  3. React后端管理系统-商品详情detail组件

    import React from 'react'; import MUtil from 'util/mm.jsx' import Product from 'service/product-serv ...

  4. 「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开发

    项目下载:https://download.csdn.net/download/weixin_44893902/13715024 1.9元付费赞助下载:https://download.csdn.ne ...

  5. 《React后台管理系统实战 :二》antd左导航:cmd批量创建子/目录、用antd进行页面布局、分离左导航为单独组件、子路由、动态写左导航、css样式相对陷阱

    一.admin页面布局及路由创建 0)cmd批量创建目录及子目录 //创建各个目录,及charts和子目录bar md home category product role user charts\b ...

  6. 《React后台管理系统实战 :一》:目录结构、引入antd、引入路由、写login页面、使用antd的form登录组件、form前台验证、高阶函数/组件

    实战 上接,笔记:https://blog.csdn.net/u010132177/article/details/104150177 https://gitee.com/pasaulis/react ...

  7. 《React后台管理系统实战 零》:基础笔记

    day01 1. 项目开发准备 1). 描述项目 2). 技术选型 3). API接口/接口文档/测试接口 2. 启动项目开发 1). 使用react脚手架创建项目 2). 开发环境运行: npm s ...

  8. 【共享单车】—— React后台管理系统开发手记:主页面架构设计

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  9. react后台管理系统路由方案及react-router原理解析

        最近做了一个后台管理系统主体框架是基于React进行开发的,因此系统的路由管理,选用了react-router(4.3.1)插件进行路由页面的管理配置. 实现原理剖析 1.hash的方式   ...

随机推荐

  1. Linux中vim编辑器常用操作技巧

    Normal 0 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-styl ...

  2. 《web-Mail服务的搭建》

    首先是搭建后台服务: 下载下面2个软件包 extmail-1.2.tar.gz extman-1.1.tar.gz 创建一个extsuite目录,固定格式 mkdir /var/www/extsuit ...

  3. 设置VS代码模板

    本文URL:http://www.cnblogs.com/CUIT-DX037/p/6770366.html 打开VS安装目录下:\Microsoft Visual Studio 12.0\Commo ...

  4. 在Azure上搭架***代理服务器

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:在Azure上搭架***代理服务器.

  5. 基于android-uitableview扩展-uilistview项目

    这个项目是正如标题说的那样,是基于uitableview项目为基础进行二次封装的,目的是实现更多的展现形式,项目地址:点击打开 不过,这个使用起来你还必须得会用uitableview扩展(项目地址:点 ...

  6. XShell远程连接本地虚机

    有很多朋友在自己电脑上部署完成了虚机,但是不知道怎么去用工具连接自己的虚机,下面给大家讲一下大概的步骤,不足之处敬请指正!! 1.打开我们的虚拟机平台,登录虚机 2.远程那肯定要知道虚机的IP地址,在 ...

  7. TCP的连接和释放过程

    TCP的连接和释放过程 1.三次握手的过程 1)主机A向主机B发送TCP连接请求数据包,其中包含主机A的初始序列号seq(A)=x.(其中报文中同步标志位SYN=1,ACK=0,表示这是一个TCP连接 ...

  8. weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架

    写在前面的话: weex官方文档不完善,在整个实施过程中遇到过很多坑,中途几次想放弃,总是有些不甘心.攻坚克难,总也是会有一些收获,先将收获进行分享也或是记录,防止忘记.要想用好weex必须对es5/ ...

  9. 美团Java面试154道题

    Java集合22题 ArrayList 和 Vector 的区别.ArrayList与Vector区别 说说 ArrayList,Vector, LinkedList 的存储性能和特性.ArrayLi ...

  10. Vue.js(2.x)之计算属性

    昨天看完大神的文章后,深感惭愧,硬着头皮继续看官网文档,然而这真的没是没办法,介绍的实在有些敷衍: 1).计算属性:也不说下computed是计算属性关键词,vm实例是可以像代理data一样代理com ...