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

在哪个网站做视频可以赚钱做公众好号的网站吗

在哪个网站做视频可以赚钱,做公众好号的网站吗,制作网站空间域名,网站遭受攻击1.Class组件的优缺点 优点 class组件可以定义自己的state#xff0c;用来保存组件自己内部的状态#xff1b;函数式组件不可以#xff0c;因为函数每次调用都会产生新的临时变量#xff1b;class组件有自己的生命周期#xff0c;我们可以在对应的生命周期中完成自己的逻…1.Class组件的优缺点 优点 class组件可以定义自己的state用来保存组件自己内部的状态函数式组件不可以因为函数每次调用都会产生新的临时变量class组件有自己的生命周期我们可以在对应的生命周期中完成自己的逻辑 比如在componentDidMount中发送网络请求并且该生命周期函数只会执行一次 函数式组件在学习hooks之前如果在函数中发送网络请求意味着每次重新渲染都会重新发送一次网络请求class组件可以在状态改变时只会重新执行render函数以及我们希望重新调用的生命周期函数componentDidUpdate等 函数式组件在重新渲染时整个函数都会被执行似乎没有什么地方可以只让它们调用一次 缺点 复杂组件变得难以理解难以理解的class组件复用状态很难 高阶组件redux中connect或者react-router中的withRouter于Provider、Consumer来共享一些状态 hooks 简单总结一下hooks 它可以让我们在不编写class的情况下使用state以及其他的React特性但是我们可以由此延伸出非常多的用法来让我们前面所提到的问题得到解决 Hook的使用场景 Hook的出现基本可以代替我们之前所有使用class组件的地方Hook只能在函数组件中使用不能在类组件或者函数组件之外的地方使用 2. 常用hooks 2.1useState保存状态 const [msg, setMsg] useState(hello hooks);2.2useEffect副作用 useEffect(() {// 执行return () {// 取消} }, [//依赖项])2.3useContext(XXXContext)接获取某个Context的值 // context.js import { createContext } from react;const UserContext createContext(); const ThemeContext createContext();export default { UserContext, ThemeContext }// App.jsx UserContext.Provider value{{name: xiaoming, age: 18}}ThemeContext.Provider value{{color: red, size: 12}}App/ThemeContext.Provider /UserContext.Provider// Function Comp export default () {const USER useContext(UserContext);const THEME useContext(ThemeContext);return (h2{USER.name}-{USER.age}/h2h3 style{{color: THEME.color, size: THEME.size}}content/h3/) }2.4userReducer()管理负责数据 useState的替代品而非redux的替代品 // const [state, dispatch] userReducer(reducer, initState);import React, { memo, userReducer } from react;function reducer(state, action){switch(action.type){case add:return {...state, counter: state.counter action.payload};case sub:return {...state, counter: state.counter - action.payload};default:return state;} }export default memo(() {const [state, dipatch] useReducer(reducer, {counter: 0});return h2counter: {state.counter}/h2button onClick{() dispatch({type: add, payload: 5})}5/buttonbutton onClick{() dispatch({type: sub, payload: 5})}-5/button/ })2.5 性能优化useCallback记忆化回调函数useMemo useCallback会返回一个函数的 memoized记忆的 值在依赖不变的情况下多次定义的时候返回的值是相同的 作为参数传递给子组件时使用; const fn useCallback(() {dosomething(a, b); }, [a, b]);配合useRef使用; const [count, setCount] useState(); const countRef useRef(); countRef.current count; const addFn useCallback(() setCount(countRef.current 1), []);useMemo(() {}, [dep])对回调函数的结果进行缓存 useCallback(fn,[dep]) useMemo(() fn, [dep]) - 进行大量的计算操作是否有必须要每次渲染时都重新计算 - 对子组件传递相同内容的对象时使用useMemo进行性能的优化2.6 useRef返回一个ref对象返回的ref对象再组件的整个生命周期保持不变。 用于获取dom元素用于保存具体的值解决闭包陷阱 2.7 useImperativeHandle子组件向父组件传递特定的对象 const SonComponent memo(forwardRef((props, ref) {const inputRef useRef();useImperativeHandle(() {return {focus(){inputRef.current.focus();}setValue(val){inputRef.current.value val;}} //返回的这个对象会被绑定到ref.current})return (h2son componenth2input ref{inputRef}//) }))const FatherComponent memo(() {const sonRef useRef();return (h1father comp/h1SonComponent ref{sonRef} //) })2.8 useLayoutEffect() useEffect会在渲染的内容更新到DOM上后执行不会阻塞DOM的更新useLayoutEffect会在渲染的内容更新到DOM上之前执行会阻塞DOM的更新 3. 自定义hook 形如useFn内部可以使用其他hook // 获取滚动位置 export function useWindomPosition(){const [position, setPosition] useState();const handleScroll () {setPosition(window.scrollY);}useEffect(() {document.addEventListener(scroll, handleScroll);return () {document.removeEventListener(scroll, handleScroll);}})return position; }// 使用localStorage存储数据 export function useLocalStorage(key){const [data, setData] useState(() JSON.parse(window.localStorage.getItem(key)));useEffect(() {window.localStorage.setItem(key, data);}, [data]);return [data, setData]; }4.其他hook useSelector将state映射到组件中;useDispatch直接获取dispatch函数;useStore获取store对象 参数一将state映射到需要的数据中参数二可以进行比较来决定是否组件重新渲染。如果state中的a发生变化某个组件只用了state中的b也会重新渲染所以需要第二个参数优化。 // 1.获取state import { useSelector, useDispatch, shallowEqual } from react-redux; const { count } useSelector((state) {return {count: state.counter.count} },shallowEqual) useId用于生成横跨服务端和客户端的稳定的唯一 ID 的同时避免 hydration 不匹配的 hook。 useId是用于react的同构应用开发的前端的SPA页面并不需要使用它useId可以保证应用程序在客户端和服务器端生成唯一的ID这样可以有效的避免通过一些手段生成的id不一致造成 hydration mismatch useTransition返回一个状态值表示过渡任务的等待状态以及一个启动该过渡任务的函数。告诉react对于某部分任务的更新优先级较低可以稍后进行更新。useDeferredValue接受一个值并返回该值的新副本该副本将推迟到更紧急地更新之后。
http://www.w-s-a.com/news/709933/

相关文章:

  • 泉州网站制作推广山西网站开发建设
  • 百度商桥怎样绑定网站百度推广登陆
  • 重庆网站建设论坛株洲论坛
  • 网站怎么做切换中英文济南广运建设公司网站
  • 网页游戏网站搭建免费建网站哪个模板多
  • 公司起名打分最准的免费网站直播网站app开发
  • 医疗器械类网站前置审批网站临时域名
  • 金融网站策划方案网站开发表格整体页面居中
  • 句容本地网站黄石下陆区建设局网站
  • 免费网站服务陕西省咸阳市建设银行网站
  • 网站建设活动计划做网站意义
  • 莱芜新闻主持人名单seo sem 外贸建站 网站建设 文化墙设计
  • 易语言可以做网站嘛赣州网站建设开发
  • 网站建设规范布局网站建设费往什么科目
  • 乐清手机网站设计哪个汽车网站汽贸店免费做
  • 网站建设课程总结报告推广软文
  • 企业网站哪里可以做烟台seo网站推广
  • 怎样建设网站优化珠海网站建设开发
  • 泰兴住房和城乡建设厅网站福州app开发
  • 免费制作公司网站seo前线
  • 导购网站怎么推广有网站源码怎么搭建网站
  • 网站开发问题杭州制作公司网站
  • 网站推广seo是什么wordpress 去除顶部
  • 建筑学不会画画影响大吗电子商务沙盘seo关键词
  • 重庆网站建设找承越上海建设工程招投标网
  • 网站建设四个步骤下单的网站建设教程
  • 网站建设合同的验收表响应式网站建设哪家好
  • 手机网站建设视频长沙百家号seo
  • 网站未备案怎么访问网站开发前端需要学什么
  • 正黄集团博弘建设官方网站wordpress设置固定链接和伪静态