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

外贸网站建设的重要性注册一个公司多少钱

外贸网站建设的重要性,注册一个公司多少钱,合肥中小企业网站制作,网页设计与制作实例教程react 自定义 hooks 简介 一句话:使用自定义hooks可以将某些组件逻辑提取到可重用的函数中。 自定义hooks是一个从use开始的调用其他hooks的Javascript函数。 下面以一个案例: 新闻发布操作,来简单说一下react 自定义 hooks。 不使用自定义hooks时 …

react 自定义 hooks

简介

一句话:使用自定义hooks可以将某些组件逻辑提取到可重用的函数中。

自定义hooks是一个从use开始的调用其他hooks的Javascript函数。

下面以一个案例: 新闻发布操作,来简单说一下react 自定义 hooks。

不使用自定义hooks时

未发布新闻 – UnPublished.js

// UnPublished.jsimport React, { useEffect, useState } from "react";
import { fetchGetUnPublishedNewsList } from "../../../utils/api";
import NewsPublish from "./components/NewsPublish";import { reactLocalStorage } from "reactjs-localstorage";export default function UnPublished() {// 获取用户权限列表const { roleId, region, username } = reactLocalStorage.getObject("token");const [dataSource, setdataSource] = useState([]);useEffect(() => {const fetchData = async () => {let params = {author: username,publishState: 1, // publishStateList = ['未发布','待发布','已发布','已下线']};const newsListData = await fetchGetUnPublishedNewsList(params); setdataSource(newsListData);};fetchData();}, []);return (<div><NewsPublish dataSource={dataSource}></NewsPublish></div>);
}

发布新闻 – Published.js

// Published.jsimport React, { useEffect, useState } from "react";
import { fetchGetUnPublishedNewsList } from "../../../utils/api";
import NewsPublish from "./components/NewsPublish";import { reactLocalStorage } from "reactjs-localstorage";export default function UnPublished() {// 获取用户权限列表const { roleId, region, username } = reactLocalStorage.getObject("token");const [dataSource, setdataSource] = useState([]);useEffect(() => {const fetchData = async () => {let params = {author: username,publishState: 3, // publishStateList = ['未发布','待发布','已发布','已下线']};const newsListData = await fetchGetUnPublishedNewsList(params); setdataSource(newsListData);};fetchData();}, []);return (<div><NewsPublish dataSource={dataSource}></NewsPublish></div>);
}

很明显,以上两个文件呈现效果不同,但使用的 逻辑代码大部分相同 时,这些逻辑代码我们就可以使用hooks进行逻辑复用。

使用自定义hooks

我们抽离以上两个文件里可以复用的逻辑代码,抽离相同逻辑代码部分,自定义hooks (即:把fetch请求数据部分,单独抽离出来),新建一个usePublish的文件。

./components/usePublish

// ./components/usePublishimport { useEffect, useState } from "react";
import { fetchGetUnPublishedNewsList } from "../../../../utils/api";
import { reactLocalStorage } from "reactjs-localstorage";function usePublish(type) { // 注意这里// 获取用户权限列表const { username } = reactLocalStorage.getObject("token");const [dataSource, setdataSource] = useState([]);useEffect(() => {const fetchData = async () => {let params = {author: username,publishState: type, // publishStateList = ['未发布','待发布','已发布','已下线']};const newsListData = await fetchGetUnPublishedNewsList(params);setdataSource(newsListData);};fetchData();}, []);return { dataSource };
}export default usePublish;

未发布新闻 – UnPublished.js 改进

import NewsPublish from "./components/NewsPublish"; import usePublish from "./components/usePublish"; // 引入自定义hooksexport default function UnPublished() {  const { dataSource } = usePublish(1);   // 使用自定义hooksreturn (<div> <NewsPublish dataSource={dataSource}></NewsPublish></div>);
}

发布新闻 – Published.js 改进

import NewsPublish from "./components/NewsPublish";import usePublish from "./components/usePublish"; // 引入自定义hooksexport default function Published() {const { dataSource } = usePublish(2); // 使用自定义hooksreturn (<div><NewsPublishdataSource={dataSource}></NewsPublish></div>);
}

自定义hooks实质

  • 自定义 Hooks 是一个函数,约定函数名称必须以 use 开头,React 就是通过函数名称是否以 use 开头来判断是不是 Hooks
  • Hooks 只能在函数组件中或其他自定义 Hooks 中使用,否则,会报错!
  • 自定义 Hooks 用来提取组件的状态逻辑,根据不同功能可以有不同的参数和返回值(就像使用普通函数一样)

总结

这个案例简单说明了如何使用react自定义hooks

在自定义hooks时,我们需要考虑几个问题:

  • 什么时候使用自定义hooks?
  • 使用自定hooks时应该传入什么参数,又返回出什么值?
  • 使用自定义hooks,我的代码逻辑有没有变简洁?

什么时候使用自定义hooks?

  • 发现某处业务逻辑重复使用时,可将业务逻辑抽离开
  • 组件比较复杂时,可通过自定义hooks拆分组件逻辑,简化代码

使用自定hooks时应该传入什么参数,又返回出什么值?

传参和返回值是比较灵活的,需要注意的是,不仅能传常规的数据类型,还能传递函数对象

为什么时候自定义hooks,我的代码好像没有变简洁?

要理解UI组件和容器组件这两个概念。

恰当的抽离业务逻辑部分,保留组件的UI部分。

组件复杂时拆分可能也有一定的难度,过度设计会导致组件更难维护,因此要把控好度 。

参考文档

  • https://blog.csdn.net/DDAD9527/article/details/121341862
http://www.yayakq.cn/news/830140/

相关文章:

  • 网站建设补充协议模板免费制作手机网站
  • 网站建设高端品牌网站设计过程介绍
  • 一个专门做标题的网站凌风wordpress百度云
  • 学校二级网站建设杭州建设网站平台的哪些企业比较好
  • 建设银行 贷款 查询 网站wordpress文章发布更新失败
  • 上线了怎么建网站沈阳网站制作联系方式
  • 中学网站系统源码wordpress api 评论
  • 福州网站制作托管维护建设视频网站费用
  • 网站建设计划书实验总结微博营销推广策划方案
  • 怎么建立一个属于自己的网站新乡手机网站建设服务
  • 成都建设网站公司简介微信小程序制作平台哪个好
  • 门户网站英文版建设wordpress音乐插件怎么用
  • 如何通过域名访问网站做游戏网站
  • 学生网站模板湖南自驾旅游与房车协会
  • 营销型网站建设实训报告个人总结wordpress载入等待
  • 加强机关网站建设电商网站开发详细流程
  • o2o网站建设机构大学网站首页设计
  • 网站建设都包括哪些内容智能网站建设维护
  • 音乐播放网站开发pc端天使投资平台官网
  • 深圳网站建设 制作元黄骅港到石家庄的客车时刻表
  • 关键词查询的分析网站百度地图排名可以优化吗
  • 那些做环保网站的好处郑州门户网站制作
  • mvc网站开发之美特色的企业网站建设
  • 网站访问统计报告模板网站建设的信息安全防范技术
  • 网站开发报价范围常用的建站软件有哪些
  • 湖北二师网站建设排名品牌网站建设9小蝌蚪9
  • 女教师遭网课入侵视频金沙百度seo优化公司
  • 网站服务器关闭怎么恢复软件技术专业就业前景
  • 网站关键词从哪改如何建设谷歌网站
  • 博客网站大全苏宁网站建设和推广策略