亲注册登录道勤网-可以查看更多帖子内容哦!(包涵精彩图片、文字详情等)请您及时注册登录-www.daoqin.net
您需要 登录 才可以下载或查看,没有账号?立即注册
x
反应备忘单react 自诞生以来已经发生了显着的发展,随着 hooks 的兴起,函数式组件已成为构建 react 应用程序的首选方法。本备忘单概述了在 react 中使用函数式组件的关键概念、功能和最佳实践。 1. 功能组件基础知识功能组件是一个返回 react 元素的纯 javascript 函数。 - const mycomponent = () => {
- return <div>hello, world!</div>;
- };
复制代码 2. 使用 jsxjsx 是一个语法扩展,允许您在 javascript 中编写类似 html 的代码。 - const mycomponent = () => {
- return (
- <div>
- <h1>welcome to react</h1>
- </div>
- );
- };
复制代码 3.道具props 用于将数据从父组件传递到子组件。
57188​​1438247 4.默认道具您可以为组件定义默认 props。 - const greeting = ({ name = "guest" }) => {
- return <h1>hello, {name}!</h1>;
- };
复制代码 5. 状态与 usestateusestate hook 允许您向功能组件添加状态。 - import { usestate } from 'react';
- const counter = () => {
- const [count, setcount] = usestate(0);
- return (
- <div>
- <p>count: {count}</p>
- <button onclick="{()"> setcount(count + 1)}>increment</button>
- </div>
- );
- };
复制代码 6.效果挂钩:useeffectuseeffect hook 可让您在功能组件中执行副作用。 - import { useeffect } from 'react';
- const datafetcher = () => {
- useeffect(() => {
- fetch('/api/data')
- .then(response => response.json())
- .then(data => console.log(data));
- }, []); // empty dependency array means it runs once
- return <div>data fetched. check console.</div>;
- };
复制代码 7. 条件渲染根据一定的条件渲染不同的ui元素。 - const loginmessage = ({ isloggedin }) => {
- return (
- <div>
- {isloggedin ? <h1>welcome back!</h1> : <h1>please log in.</h1>}
- </div>
- );
- };
复制代码 8. 列表和键渲染数据列表并使用键来帮助 react 识别哪些项目已更改。 - const itemlist = ({ items }) => {
- return (
复制代码
{items.map(item => (- {item.name}
))}
); }; 9. 事件处理处理功能组件中的事件。 - const button = () => {
- const handleclick = () => {
- alert('button clicked!');
- };
- return <button onclick="{handleclick}">click me</button>;
- };
复制代码 10. 表格和受控组件使用受控组件处理表单输入。 - const form = () => {
- const [value, setvalue] = usestate('');
- const handlechange = (e) => {
- setvalue(e.target.value);
- };
- const handlesubmit = (e) => {
- e.preventdefault();
- alert(`submitted value: ${value}`);
- };
- return (
复制代码); }; 11. 上下文api使用 context api 进行跨组件树的状态管理。 - <blockquote>import { createcontext, usecontext } from 'react';
复制代码 12. 自定义挂钩使用自定义挂钩创建可重用逻辑。 - import { usestate, useeffect } from 'react';
- const usefetch = (url) => {
- const [data, setdata] = usestate(null);
- useeffect(() => {
- fetch(url)
- .then(response => response.json())
- .then(data => setdata(data));
- }, [url]);
- return data;
- };
- // usage
- const datacomponent = () => {
- const data = usefetch('/api/data');
- return <div>{data ? json.stringify(data) : 'loading...'}</div>;
- };
复制代码 13. 使用 usememo 进行记忆通过记忆昂贵的计算来优化性能。 - import { usememo } from 'react';
- const expensivecomponent = ({ number }) => {
- const expensivecalculation = usememo(() => {
- // assume this is a computationally expensive operation
- return number * 2;
- }, [number]);
- return <div>{expensivecalculation}</div>;
- };
复制代码 14. 使用回调使用 usecallback 来记忆函数,以防止不必要的重新渲染。 - import { usecallback } from 'react';
- const button = ({ onclick }) => {
- return <button onclick="{onclick}">click me</button>;
- };
- const parentcomponent = () => {
- const handleclick = usecallback(() => {
- console.log('button clicked');
- }, []);
- return <button onclick="{handleclick}"></button>;
- };
复制代码 15. 使用reducer使用 usereducer hook 管理复杂的状态逻辑。 - import { usereducer } from 'react';
- const reducer = (state, action) => {
- switch (action.type) {
- case 'increment':
- return { count: state.count + 1 };
- case 'decrement':
- return { count: state.count - 1 };
- default:
- throw new error();
- }
- };
- const counter = () => {
- const [state, dispatch] = usereducer(reducer, { count: 0 });
- return (
- <div>
- <p>count: {state.count}</p>
- <button onclick="{()"> dispatch({ type: 'increment' })}>increment</button>
- <button onclick="{()"> dispatch({ type: 'decrement' })}>decrement</button>
- </div>
- );
- };
复制代码 16. 碎片使用片段对多个元素进行分组,无需向 dom 添加额外的节点。 - const mycomponent = () => {
- return (
-
- <h1>title</h1>
- <p>description</p>
- >
- );
- };
复制代码 17. 门户网站将子组件渲染到父组件 dom 层次结构之外的 dom 节点中。 - import { createportal } from 'react-dom';
- const modal = ({ children }) => {
- return createportal(
- <div classname="modal">
- {children}
- </div>,
- document.getelementbyid('modal-root')
- );
- };
复制代码 18. 带有误差边界分量的误差边界使用类组件作为错误边界。 - import { component } from 'react';
- class errorboundary extends component {
- constructor(props) {
- super(props);
- this.state = { haserror: false };
- }
- static getderivedstatefromerror(error) {
- return { haserror: true };
- }
- componentdidcatch(error, errorinfo) {
- console.log(error, errorinfo);
- }
- render() {
- if (this.state.haserror) {
- return <h1>something went wrong.</h1>;
- }
- return this.props.children;
- }
- }
- // usage
- <errorboundary><mycomponent></mycomponent></errorboundary>
复制代码 19. 使用 react.lazy 和 suspense 进行延迟加载动态导入组件,减少初始加载时间。 - import { lazy, suspense } from 'react';
- const lazycomponent = lazy(() => import('./lazycomponent'));
- const app = () => {
- return (
- <suspense fallback="{<div">loading...}>
- <lazycomponent></lazycomponent></suspense>
- );
- };
复制代码 20. 用于类型检查的 proptypes使用 prop-types 来记录和强制执行组件 prop 类型。 - import PropTypes from 'prop-types';
- const Greeting = ({ name }) => {
- return <h1>Hello, {name}!</h1>;
- };
- Greeting.propTypes = {
- name: PropTypes.string.isRequired,
- };
复制代码函数式组件提供了一种干净、直接的方式来构建 react 应用程序,尤其是 hooks 引入的强大功能。此备忘单提供了基本概念的快速参考,帮助您编写有效且高效的 react 代码。
道勤主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用道勤主机过程中所遇到的一切问题!
如果您是道勤主机用户,那么您可以通过QQ【792472177】、售后QQ【59133755】、旺旺【诠释意念】、微信:q792472177免费电话、后台提交工单这些方式联系道勤主机客服!
如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到道勤主机的服务! |