立即注册 找回密码

QQ登录

只需一步,快速开始

查看: 41|回复: 0

React 备忘单:功能组件版

[复制链接]
发表于 2024-8-7 19:46:11 | 显示全部楼层 |阅读模式
道勤网-数据www.daoqin.net

亲注册登录道勤网-可以查看更多帖子内容哦!(包涵精彩图片、文字详情等)请您及时注册登录-www.daoqin.net

您需要 登录 才可以下载或查看,没有账号?立即注册

x
反应备忘单
react 自诞生以来已经发生了显着的发展,随着 hooks 的兴起,函数式组件已成为构建 react 应用程序的首选方法。本备忘单概述了在 react 中使用函数式组件的关键概念、功能和最佳实践。
1. 功能组件基础知识
功能组件是一个返回 react 元素的纯 javascript 函数。
  1. const mycomponent = () => {
  2.   return <div>hello, world!</div>;
  3. };
复制代码
2. 使用 jsx
jsx 是一个语法扩展,允许您在 javascript 中编写类似 html 的代码。
  1. const mycomponent = () =&gt; {
  2.   return (
  3.     <div>
  4.       <h1>welcome to react</h1>
  5.     </div>
  6.   );
  7. };
复制代码
3.道具
props 用于将数据从父组件传递到子组件。
57188&#8203;&#8203;1438247
4.默认道具
您可以为组件定义默认 props。
  1. const greeting = ({ name = "guest" }) =&gt; {
  2.   return <h1>hello, {name}!</h1>;
  3. };
复制代码
5. 状态与 usestate
usestate hook 允许您向功能组件添加状态。
  1. import { usestate } from 'react';

  2. const counter = () =&gt; {
  3.   const [count, setcount] = usestate(0);

  4.   return (
  5.     <div>
  6.       <p>count: {count}</p>
  7.       <button onclick="{()"> setcount(count + 1)}&gt;increment</button>
  8.     </div>
  9.   );
  10. };
复制代码
6.效果挂钩:useeffect
useeffect hook 可让您在功能组件中执行副作用。
  1. import { useeffect } from 'react';

  2. const datafetcher = () =&gt; {
  3.   useeffect(() =&gt; {
  4.     fetch('/api/data')
  5.       .then(response =&gt; response.json())
  6.       .then(data =&gt; console.log(data));
  7.   }, []); // empty dependency array means it runs once

  8.   return <div>data fetched. check console.</div>;
  9. };
复制代码
7. 条件渲染
根据一定的条件渲染不同的ui元素。
  1. const loginmessage = ({ isloggedin }) =&gt; {
  2.   return (
  3.     <div>
  4.       {isloggedin ? <h1>welcome back!</h1> : <h1>please log in.</h1>}
  5.     </div>
  6.   );
  7. };
复制代码
8. 列表和键
渲染数据列表并使用键来帮助 react 识别哪些项目已更改。
  1. const itemlist = ({ items }) =&gt; {
  2.   return (
复制代码

    {items.map(item => (
  • {item.name}
    ))}
); };
9. 事件处理
处理功能组件中的事件。
  1. const button = () =&gt; {
  2.   const handleclick = () =&gt; {
  3.     alert('button clicked!');
  4.   };

  5.   return <button onclick="{handleclick}">click me</button>;
  6. };
复制代码
10. 表格和受控组件
使用受控组件处理表单输入。
  1. const form = () =&gt; {
  2.   const [value, setvalue] = usestate('');

  3.   const handlechange = (e) =&gt; {
  4.     setvalue(e.target.value);
  5.   };

  6.   const handlesubmit = (e) =&gt; {
  7.     e.preventdefault();
  8.     alert(`submitted value: ${value}`);
  9.   };

  10.   return (
复制代码
); };
11. 上下文api
使用 context api 进行跨组件树的状态管理。
  1. <blockquote>import { createcontext, usecontext } from 'react';
复制代码
12. 自定义挂钩
使用自定义挂钩创建可重用逻辑。
  1. import { usestate, useeffect } from 'react';

  2. const usefetch = (url) =&gt; {
  3.   const [data, setdata] = usestate(null);

  4.   useeffect(() =&gt; {
  5.     fetch(url)
  6.       .then(response =&gt; response.json())
  7.       .then(data =&gt; setdata(data));
  8.   }, [url]);

  9.   return data;
  10. };

  11. // usage
  12. const datacomponent = () =&gt; {
  13.   const data = usefetch('/api/data');

  14.   return <div>{data ? json.stringify(data) : 'loading...'}</div>;
  15. };
复制代码
13. 使用 usememo 进行记忆
通过记忆昂贵的计算来优化性能。
  1. import { usememo } from 'react';

  2. const expensivecomponent = ({ number }) =&gt; {
  3.   const expensivecalculation = usememo(() =&gt; {
  4.     // assume this is a computationally expensive operation
  5.     return number * 2;
  6.   }, [number]);

  7.   return <div>{expensivecalculation}</div>;
  8. };
复制代码
14. 使用回调
使用 usecallback 来记忆函数,以防止不必要的重新渲染。
  1. import { usecallback } from 'react';

  2. const button = ({ onclick }) =&gt; {
  3.   return <button onclick="{onclick}">click me</button>;
  4. };

  5. const parentcomponent = () =&gt; {
  6.   const handleclick = usecallback(() =&gt; {
  7.     console.log('button clicked');
  8.   }, []);

  9.   return <button onclick="{handleclick}"></button>;
  10. };
复制代码
15. 使用reducer
使用 usereducer hook 管理复杂的状态逻辑。
  1. import { usereducer } from 'react';

  2. const reducer = (state, action) =&gt; {
  3.   switch (action.type) {
  4.     case 'increment':
  5.       return { count: state.count + 1 };
  6.     case 'decrement':
  7.       return { count: state.count - 1 };
  8.     default:
  9.       throw new error();
  10.   }
  11. };

  12. const counter = () =&gt; {
  13.   const [state, dispatch] = usereducer(reducer, { count: 0 });

  14.   return (
  15.     <div>
  16.       <p>count: {state.count}</p>
  17.       <button onclick="{()"> dispatch({ type: 'increment' })}&gt;increment</button>
  18.       <button onclick="{()"> dispatch({ type: 'decrement' })}&gt;decrement</button>
  19.     </div>
  20.   );
  21. };
复制代码
16. 碎片
使用片段对多个元素进行分组,无需向 dom 添加额外的节点。
  1. const mycomponent = () =&gt; {
  2.   return (
  3.    
  4.       <h1>title</h1>
  5.       <p>description</p>
  6.     &gt;
  7.   );
  8. };
复制代码
17. 门户网站
将子组件渲染到父组件 dom 层次结构之外的 dom 节点中。
  1. import { createportal } from 'react-dom';

  2. const modal = ({ children }) =&gt; {
  3.   return createportal(
  4.     <div classname="modal">
  5.       {children}
  6.     </div>,
  7.     document.getelementbyid('modal-root')
  8.   );
  9. };
复制代码
18. 带有误差边界分量的误差边界
使用类组件作为错误边界。
  1. import { component } from 'react';

  2. class errorboundary extends component {
  3.   constructor(props) {
  4.     super(props);
  5.     this.state = { haserror: false };
  6.   }

  7.   static getderivedstatefromerror(error) {
  8.     return { haserror: true };
  9.   }

  10.   componentdidcatch(error, errorinfo) {
  11.     console.log(error, errorinfo);
  12.   }

  13.   render() {
  14.     if (this.state.haserror) {
  15.       return <h1>something went wrong.</h1>;
  16.     }

  17.     return this.props.children;
  18.   }
  19. }

  20. // usage
  21. <errorboundary><mycomponent></mycomponent></errorboundary>
复制代码
19. 使用 react.lazy 和 suspense 进行延迟加载
动态导入组件,减少初始加载时间。
  1. import { lazy, suspense } from 'react';

  2. const lazycomponent = lazy(() =&gt; import('./lazycomponent'));

  3. const app = () =&gt; {
  4.   return (
  5.     <suspense fallback="{&lt;div">loading...}&gt;
  6.       <lazycomponent></lazycomponent></suspense>
  7.   );
  8. };
复制代码
20. 用于类型检查的 proptypes
使用 prop-types 来记录和强制执行组件 prop 类型。
  1. import PropTypes from 'prop-types';

  2. const Greeting = ({ name }) =&gt; {
  3.   return <h1>Hello, {name}!</h1>;
  4. };

  5. Greeting.propTypes = {
  6.   name: PropTypes.string.isRequired,
  7. };
复制代码
函数式组件提供了一种干净、直接的方式来构建 react 应用程序,尤其是 hooks 引入的强大功能。此备忘单提供了基本概念的快速参考,帮助您编写有效且高效的 react 代码。

道勤主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用道勤主机过程中所遇到的一切问题! 如果您是道勤主机用户,那么您可以通过QQ【792472177】、售后QQ【59133755】、旺旺【诠释意念】、微信:q792472177免费电话、后台提交工单这些方式联系道勤主机客服! 如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到道勤主机的服务!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

道勤网- 推荐内容!上一条 /2 下一条

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回复 !jz_fhlb! !jz_lxwm! !jz_gfqqq!

关于我们|手机版|小黑屋|地图|【道勤网】-www.daoqin.net 软件视频自学教程|免费教程|自学电脑|3D教程|平面教程|影视动画教程|办公教程|机械设计教程|网站设计教程 ( 皖ICP备15000319号-1 )

GMT+8, 2024-12-23 08:12

Powered by DaoQin! X3.4 © 2016-2063 Dao Qin & 道勤科技

快速回复 返回顶部 返回列表