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

乐清站在哪跨境电商平台有哪些?

乐清站在哪,跨境电商平台有哪些?,推荐购物网站建设,南京外贸网站建站七、React 事件处理与性能优化 React 事件处理采用 合成事件(SyntheticEvent),它是 React 对原生事件的封装,提供了更好的跨浏览器兼容性和性能优化。 (一)事件绑定 1. 基本事件绑定 function Button() …

七、React 事件处理与性能优化

React 事件处理采用 合成事件(SyntheticEvent),它是 React 对原生事件的封装,提供了更好的跨浏览器兼容性和性能优化。


(一)事件绑定

1. 基本事件绑定
function Button() {return <button onClick={() => alert("Clicked!")}>Click Me</button>;
}
2. 在类组件中绑定事件
class App extends React.Component {handleClick() {alert("Clicked!");}render() {return <button onClick={this.handleClick}>Click Me</button>;}
}

问题this.handleClick 没有绑定 this,导致 thisundefined
解决方案

  • 方法 1:使用箭头函数(推荐)
    <button onClick={() => this.handleClick()}>Click Me</button>
    
  • 方法 2:在构造函数中绑定 this
    constructor(props) {super(props);this.handleClick = this.handleClick.bind(this);
    }
    

(二)事件对象 event

React 事件处理函数会接收一个 合成事件(SyntheticEvent),它与原生事件类似,但性能更优。

function Button() {const handleClick = (event) => {console.log(event.target); // 获取触发事件的元素};return <button onClick={handleClick}>Click Me</button>;
}
阻止默认行为
function Link() {return (<a href="https://react.dev" onClick={(e) => e.preventDefault()}>Click me (but won’t navigate)</a>);
}
事件冒泡 & 阻止事件传播
function Parent() {const handleParentClick = () => console.log("Parent Clicked!");const handleChildClick = (event) => {event.stopPropagation(); // 阻止事件冒泡console.log("Child Clicked!");};return (<div onClick={handleParentClick}><button onClick={handleChildClick}>Click Me</button></div>);
}

(三)事件传参

传递参数
function Button({ name }) {const handleClick = (name, event) => {console.log(`Hello, ${name}`);};return <button onClick={(e) => handleClick(name, e)}>Click Me</button>;
}

(四)性能优化

React 在事件处理上进行了优化,但仍需开发者手动优化。

1. 使用 useCallback 避免函数重复创建
const handleClick = useCallback(() => {console.log("Clicked!");
}, []);
2. 使用 useMemo 避免不必要的计算
const expensiveValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
3. 使用 React.memo 避免组件重复渲染
const Child = React.memo(({ value }) => {console.log("Child Rendered");return <div>{value}</div>;
});
4. 使用 shouldComponentUpdate 进行类组件优化
class Example extends React.Component {shouldComponentUpdate(nextProps) {return nextProps.value !== this.props.value;}
}

八、React 状态管理

React 的组件可以使用 useState 进行状态管理,但当组件层级较深时,状态管理会变得复杂。

(一)Context API(适用于全局状态共享)

1. 创建 Context
const ThemeContext = React.createContext();
2. 提供数据
function App() {return (<ThemeContext.Provider value="dark"><Toolbar /></ThemeContext.Provider>);
}
3. 消费数据
function Toolbar() {return (<ThemeContext.Consumer>{(theme) => <div>Current Theme: {theme}</div>}</ThemeContext.Consumer>);
}

推荐使用 useContext 简化写法

function Toolbar() {const theme = useContext(ThemeContext);return <div>Current Theme: {theme}</div>;
}

(二)Redux(适用于大规模应用)

Redux 通过 单一数据源(Store)纯函数(Reducer) 管理应用状态。

1. 创建 Redux Store
import { createStore } from "redux";const reducer = (state = { count: 0 }, action) => {switch (action.type) {case "INCREMENT":return { count: state.count + 1 };default:return state;}
};const store = createStore(reducer);
2. 订阅 Store
store.subscribe(() => console.log(store.getState()));
3. 触发 Action
store.dispatch({ type: "INCREMENT" });
4. 结合 React

使用 react-redux 提供的 Provider

import { Provider } from "react-redux";function App() {return (<Provider store={store}><Counter /></Provider>);
}

九、React 18 重要优化

(一)自动批量更新(Automatic Batching)

React 18 以前,多个 setState 会触发多次渲染:

setCount(count + 1);
setName("React");

React 18 之后,这些状态更新会自动合并,提高性能。


(二)并发渲染(Concurrent Rendering)

React 18 引入 并发模式,允许多个渲染任务同时进行,避免卡顿。

1. startTransition
import { startTransition } from "react";const handleInputChange = (e) => {startTransition(() => {setSearchQuery(e.target.value);});
};

(三)useDeferredValue(降低 UI 更新优先级)

const deferredQuery = useDeferredValue(searchQuery);

React 会优先渲染 高优先级任务(如输入框输入),而延迟更新 低优先级任务(如搜索结果)。


十、总结

1. 事件处理

  • 事件使用 合成事件
  • 可以通过 preventDefault 阻止默认行为
  • 事件处理函数应使用 useCallback 进行优化

2. 状态管理

  • 组件内部状态使用 useState
  • 组件间状态共享可使用 Context API
  • 大规模应用推荐 Redux

3. 性能优化

  • React.memo 避免组件重复渲染
  • useMemo 缓存计算值
  • useCallback 缓存事件处理函数

4. React 18 关键优化

  • 自动批量更新
  • 并发渲染
  • useDeferredValue 降低 UI 更新优先级

下一章:深入理解 React Router 及前端路由管理 🚀

http://www.dtcms.com/wzjs/187343.html

相关文章:

  • 做网站的公司广州廊坊关键词优化排名
  • 四川成都营销型网站网络服务费计入什么科目
  • 网站建设公司价格表广告推广免费发布
  • 网站怎么做导航域名交易平台
  • 合肥做网站建设公司在百度上怎么卖自己的产品
  • 杭州未来科技网站建设百度账号怎么改用户名
  • php做的购物网站代码2020年度关键词有哪些
  • wordpress文件共享seo优化就业前景
  • 顺企网哈尔滨网站建设员工培训课程
  • 哈尔滨市做淘宝的网站河南专业网站建设
  • 品牌网站设计图片怎么做推广网站
  • 政法网 网站建设一个产品的网络营销方案
  • 做任务赚钱网站源码网站降权查询工具
  • 龙岩市城乡建设局网站进不去在线seo超级外链工具
  • 手机版网站开发工具长沙免费网站建站模板
  • 柳州企业 商家应该如何做网站seo广告投放
  • 厦门网站建设公司哪家好外链工厂 外链
  • 秦皇岛建网站多少钱网络热词2023
  • 把自己的网站卖给别人后对方做违法韩国比分预测
  • 为什么招聘网站做不大郑州seo优化培训
  • 网站 售前网址之家大全
  • 滨海做网站的公司南昌seo网站排名
  • 如何做网站淘宝客百度推广客户端电脑版
  • 做网站好的网站建设公司搜索竞价托管
  • 怎样做网站检索数据分析seo搜索引擎优化方式
  • 网站用户管理系统怎么推广
  • 现代网站开发建设流程百度推广后台
  • 网购哪个网站好又便宜搜狗收录查询
  • 网站配色案例分析怎么把网站排名优化
  • 淘宝客网站里面catid=16建站平台在线提交功能