IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> React中的购物车加减按钮(简易版) -> 正文阅读

[JavaScript知识库]React中的购物车加减按钮(简易版)

主要是createContext 中的Provider Consumer两个参数

import React, { Component, createContext } from "react";
{
  /* 这严格来说是在页面分了组件 就是少了import步骤 */
}
// 按理说这只是一个分组件传参的东东  一个页面上用不上吧
// 这关键之处在把三个东西绑定在一个大的盒子里,这个盒子就是上面的createContext
const { Provider, Consumer } = createContext();
// 貌似加减按钮可以直接写在下面。。Reduce和Add功能差不多
const Reduce = () => {
  return (
    <div>
      <Consumer>
        {(value) => <button onClick={value.reduce}>-</button>}
      </Consumer>
    </div>
  );
};
// 这是加按钮  用Consumer去消费Provider传过来的东西  主要是add方法
const Add = () => {
  return (
    <div>
      <Consumer>{(value) => <button onClick={value.add}>+</button>}</Consumer>
    </div>
  );
};

// 这是父组件  点击方法也在这里写,然后方法要在Provider的value中曝光
class allCart extends Component {
  // 这个定义框中的初始值,后续的num操作也是基于此
  state = {
    num: 10,
  };
  // 点击减少函数方法,写法较为陌生,记住
  reduce = () => {
    this.setState((preState) => {
      return {
        num: --preState.num,
      };
    });
  };
  // 点击加一方法
  add = () => {
    this.setState((preState) => {
      return {
        num: ++preState.num,
      };
    });
  };
  // 渲染部分
  render() {
    return (
      // Provider代替原来的空标签,可以加一个value值,把参数、方法分享给下面的子组件标签
      <Provider
        value={{
          num: this.state.num,
          reduce: this.reduce,
          add: this.add,
        }}
      >
        <h1>我是一个可以加减的框框</h1>
        <Consumer>
          {(value) => (
            <>
              <Reduce />
              <span>{value.num}</span>
              <Add />
            </>
          )}
        </Consumer>
      </Provider>
    );
  }
}

export default allCart;

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 10:38:28  更:2021-07-23 10:42:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 14:01:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码