热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

reacthooks综合运用的一个小例子(reacthooks只能在组件中调用吗?好像是的)

麻雀虽小五脏俱全,每个东西拆开起来很好学,但要是综合在一起运用起来做个小项目又有点难度了我是看B站的一个大佬的敲得小demo我也是练习了好多次也是勉强熟

麻雀虽小五脏俱全,每个东西拆开起来 很好学,但要是综合在一起 运用起来做个小项目 又有点难度了 我是看 B站的一个大佬的 敲得小demo 我也是练习了好多次 也是勉强熟练掌握 大佬就是大佬 佩服佩服

csdn 好像不让放外部链接 是 一个叫做技术胖的大佬 大家可以去看下他的 react hooks视频 讲的很好

就是下面的这个小demo 结合了 useReducer useContext createContext
第一看的时候 传来传去 把我也传晕了 敲了两次 慢慢有了感觉 毕竟我也是刚入手的react 哈哈 任重而道远
在这里插入图片描述

其实吧 拿到 需求上来就写代码 都是不明智的 应该先对项目进行分析 然后对项目结构和代码目录进行 分析
在这里插入图片描述
我是这样划分的
将展示区域和按钮区域分别放在一个组件中 并存放到 一个 components 文件夹中

因为要用到 useReducer 所以 建立一个 reducer文件夹 用来存放 reducer函数

之后是 将两个组件存放到 一个 视图 Color 中

下面就开始写代码了
App.js中 就是引入各种文件 这个没啥难度

import React from 'react'
import { Color } from './views/Color';
import Button from './components/Button.js';
import ShowArea from &#39;./components/ShowArea.js&#39;;export default function App(){return (<><Color><ShowArea/><Button /></Color></>)
}

Color.js

import React, { useReducer,createContext } from &#39;react&#39;;
import reducer from &#39;../reducer&#39;; // 引入reducer函数
export const ColorContent &#61; createContext({}); // 创建上下文对象
export const UPDATE_COLOR &#61;"UPDATE_COLOR"; // 这个用来改变 颜色值的类型
export const Color&#61; props&#61;>{const [color, dispatch] &#61; useReducer(reducer, &#39;pink&#39;);return (// 传递一个对象 应该是 {{ name:"zhao",age:24}}// 将 color 和dispatch 传递给子组件中<ColorContent.Provider value&#61;{{color,dispatch}}>{props.children}</ColorContent.Provider>)
}

reducer.js

import { UPDATE_COLOR } from &#39;../views/Color&#39;
export default function reducer(state, actions) {switch (actions.type) {case UPDATE_COLOR:return actions.color;default:return state;}
}

ShowArea.js

import React,{useContext} from &#39;react&#39;;
import { ColorContent } from "../views/Color"function ShowArea(){const { color } &#61; useContext(ColorContent); // 拿父组件传来的值return (<><div style&#61;{{width:&#39;100px&#39;,height:&#39;100px&#39;,backgroundColor:color}}></div></>)
}export default ShowArea;

Button.js

import React,{useContext} from &#39;react&#39;
import { ColorContent,UPDATE_COLOR } from "../views/Color"function Button(){const { dispatch } &#61; useContext(ColorContent);function blue() {dispatch({ type: UPDATE_COLOR, color: &#39;blue&#39; });}function red() {dispatch({ type: UPDATE_COLOR, color: &#39;red&#39; });}return (<><button onClick&#61;{blue}>蓝色</button><button onClick&#61;{red}>红色</button></>)
}export default Button;


推荐阅读
  • 十一、构建我们自己的包在本章中,我们将学习如何构建自己的包。编写包可以让我们创建可以在许多应用 ... [详细]
  • 上次我们总结了React代码构建后的webpack模块组织关系,今天来介绍一下Babel编译JSX生成目标代码的一些规则,并且写一个简单的解析器,模拟整个生成的过程。我们还是拿最简 ... [详细]
  • react里可以但是vue我不熟悉,没找到App.vue是父`这里我想加载导航这是路由 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 1.安装cordovapluginaddcordova-plugin-file-transfercordovapluginaddcordova-plugin-fi ... [详细]
  • 作者|相学长原文|https:github.comwuomzfxblogblobmasterthis.md日常开发中,我们经常用到this。例如用Jquery绑定事件 ... [详细]
  • 【从零到壹】Koa 从理解到实现
    【从零到壹】Koa从理解到实现-【点击查看文中的相关源码】根据官网的介绍,Koa是一个新的Web框架,致力于成为Web应用和API开发领域中的一个更小、更富有表现力和更健壮的基石。 ... [详细]
  • vue组件component的注册与使用详解_vue.js
    组件是Vue是一个可以重复使用的Vue实例, 它拥有独一无二的组件名称,它可以扩展HTML元素,以组件名称的方式作为自定义的HTML标签,这篇文章主要介绍了vue组件compone ... [详细]
  • VUE2 实现一个页面 调用 另一个页面的函数
    今天我在Vue 需要实现 一个这样的功能在App.vue页面中 要实现 调用 另一个页(ExtensionMonitor.vue)中的函数 并将参数 传过去下面将实现的步骤写下来, ... [详细]
  • Vue项目结构分析-项目结构重点在src文件夹:assets——静态资源,如css,jscomponents——公共组件router——路由文件(vuecli3.x没有自 ... [详细]
  • Xib九宫格应用管理使用xib封装一个自定义view的步骤1新建一个继承UIView的自定义view,假设类名叫做(AppView)2新建一个AppView.xib文件来描述 ... [详细]
  • 如何用js 实现依赖注入的思想,后端框架思想搬到前端来
    如何用js实现依赖注入的思想,后端框架思想搬到前端来-大家在做些页面的时候,很多都是用ajax实现的,在显示的时候有很多表单提交的add或者update操作,显然这样很烦,突然想到 ... [详细]
  • 在这一期的SendMessage函数应用中,我将向大家介绍如何利用消息函数来扩展树型列表(TreeView)控件的功能相信对于树型列表控件大家十分的熟悉, ... [详细]
  • jquery popupDialog 使用 加载jsp页面办法
    php教程|PHP开发jqueryphp教程-PHP开发如下所示:软件市场源码,vsCode字体不变,ubuntu的所有版本,taotomcat,sqlite连接php,个人域名服 ... [详细]
  • AngularJS ... [详细]
author-avatar
mobiledu2502879733
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有