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

百度网站优化培训搜索引擎推广试题

百度网站优化培训,搜索引擎推广试题,网页搭建系统框图,湖北武汉最新消息React 基础概念 1. React 的生命周期方法有哪些? React 类组件的生命周期分为三个阶段: 挂载阶段: constructor():初始化 state 和绑定方法static getDerivedStateFromProps():在 render 前调用render()&#xff1…

React 基础概念

1. React 的生命周期方法有哪些?

React 类组件的生命周期分为三个阶段:

挂载阶段

  • constructor():初始化 state 和绑定方法
  • static getDerivedStateFromProps():在 render 前调用
  • render():渲染组件
  • componentDidMount():组件挂载后调用,适合发起网络请求

更新阶段

  • static getDerivedStateFromProps():props 变化时调用
  • shouldComponentUpdate():决定组件是否重新渲染
  • render():渲染组件
  • getSnapshotBeforeUpdate():在 DOM 更新前捕获信息
  • componentDidUpdate():组件更新后调用

卸载阶段

  • componentWillUnmount():组件卸载前清理定时器、取消订阅等

2. React 的函数组件和类组件有什么区别?

特性函数组件类组件
语法普通函数ES6 class 继承 React.Component
状态管理使用 Hooks (useState)使用 this.state
生命周期使用 useEffect 等 Hooks有完整的生命周期方法
this 关键字需要绑定 this
性能更轻量相对较重
代码量更简洁相对冗长

3. 什么是虚拟 DOM?React 如何工作?

虚拟 DOM

  • 是真实 DOM 的轻量级 JavaScript 表示
  • 用 JavaScript 对象描述 DOM 树结构
  • 通过 diff 算法比较新旧虚拟 DOM 的差异

工作流程

  1. 当状态改变时,重新渲染组件生成新的虚拟 DOM
  2. 比较新旧虚拟 DOM(diff 算法)
  3. 计算出最小变更集
  4. 批量更新真实 DOM

4. React 的 key 有什么作用?

  • 唯一标识:帮助 React 识别哪些元素被改变、添加或删除
  • 优化性能:减少不必要的 DOM 操作
  • 正确使用
    • 应该在数组内的元素上设置 key
    • key 应该在兄弟节点间唯一
    • 不推荐使用 index 作为 key(除非列表静态不变)

React Hooks

5. 常用的 React Hooks 有哪些?

  1. useState:管理组件状态

    const [state, setState] = useState(initialState);
    
  2. useEffect:处理副作用

    useEffect(() => {// 副作用代码return () => { /* 清理函数 */ };
    }, [dependencies]);
    
  3. useContext:访问 Context

    const value = useContext(MyContext);
    
  4. useReducer:复杂状态逻辑

    const [state, dispatch] = useReducer(reducer, initialState);
    
  5. useCallback:记忆函数

    const memoizedCallback = useCallback(() => { doSomething(a, b); }, [a, b]);
    
  6. useMemo:记忆值

    const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
    
  7. useRef:访问 DOM 或保存可变值

    const refContainer = useRef(initialValue);
    

6. useEffect 和 useLayoutEffect 的区别?

特性useEffectuseLayoutEffect
执行时机在浏览器绘制后异步执行在 DOM 更新后同步执行
用途数据获取、订阅等副作用需要同步读取/操作 DOM 的情况
对用户的影响不会阻塞页面渲染会阻塞页面渲染
使用频率常用特殊场景使用

7. 如何自定义 Hook?

自定义 Hook 是一个以 “use” 开头的函数,可以调用其他 Hook:

function useCustomHook(initialValue) {const [value, setValue] = useState(initialValue);const doubleValue = useMemo(() => value * 2, [value]);const increment = useCallback(() => {setValue(v => v + 1);}, []);return { value, doubleValue, increment };
}

使用规则:

  1. 只在 React 函数组件或自定义 Hook 中调用 Hook
  2. 只在最顶层调用 Hook
  3. 自定义 Hook 必须以 “use” 开头

React 进阶知识

8. React 的 diff 算法原理是什么?

React 的 diff 算法基于两个假设:

  1. 不同类型的元素会产生不同的树
  2. 通过 key 属性标识稳定的子元素

优化策略:

  • Tree Diff:只比较同级节点,不跨级比较
  • Component Diff
    • 相同类组件继续比较
    • 不同类组件直接替换
  • Element Diff
    • 使用 key 标识元素
    • 移动而非重建相同 key 的元素

9. React 的性能优化手段有哪些?

  1. 使用 React.memo:缓存函数组件

    const MyComponent = React.memo(function MyComponent(props) {/* 使用 props 渲染 */
    });
    
  2. 使用 useMemo/useCallback:避免不必要的计算和渲染

  3. 避免内联函数和对象:防止子组件不必要重渲染

  4. 代码分割

    const OtherComponent = React.lazy(() => import('./OtherComponent'));
    
  5. 虚拟化长列表:使用 react-window 或 react-virtualized

  6. 避免使用索引作为 key

  7. 使用 shouldComponentUpdate/PureComponent

10. React 的 Context 是什么?如何使用?

Context 提供了一种在组件树中共享值的方式,而不必显式地通过组件树的逐层传递 props。

创建 Context

const MyContext = React.createContext(defaultValue);

提供 Context

<MyContext.Provider value={/* 某个值 */}>{/* 子组件 */}
</MyContext.Provider>

消费 Context

// 类组件
static contextType = MyContext;
// 或
<MyContext.Consumer>{value => /* 基于 context 值进行渲染*/}
</MyContext.Consumer>// 函数组件
const value = useContext(MyContext);

11. Redux 的核心概念和工作流程

核心概念

  1. Store:保存应用状态的单一对象
  2. Action:描述发生什么的对象,必须有 type 字段
  3. Reducer:纯函数,接收旧 state 和 action,返回新 state
  4. Dispatch:触发 action 的方法

工作流程

  1. 用户触发 UI 事件
  2. dispatch 一个 action
  3. reducer 根据 action 类型处理状态
  4. store 保存新状态
  5. 订阅 store 的组件重新渲染

Redux 三大原则

  1. 单一数据源
  2. State 是只读的
  3. 使用纯函数修改 state

12. React Router 的核心概念和用法

核心组件

  1. <BrowserRouter>:使用 HTML5 history API 的路由器
  2. <Route>:路由配置核心组件
  3. <Switch>:渲染第一个匹配的路由
  4. <Link>:导航链接
  5. <Redirect>:重定向

基本用法

<BrowserRouter><Switch><Route exact path="/" component={Home} /><Route path="/about" component={About} /><Route path="/users/:id" component={User} /><Redirect to="/" /></Switch>
</BrowserRouter>

Hooks API

  • useHistory:访问 history 对象
  • useLocation:访问 location 对象
  • useParams:访问路由参数
  • useRouteMatch:访问匹配信息

React 实战问题

13. 如何解决 props 层层传递(prop drilling)问题?

  1. 使用 Context API:适合全局共享的数据
  2. 状态管理库:Redux、MobX 等
  3. 组件组合:通过 children 或 render props
  4. 状态提升:将共享状态提升到最近的共同祖先
  5. 自定义 Hooks:封装共享逻辑

14. React 中的错误边界是什么?

错误边界是捕获子组件树 JavaScript 错误的 React 组件:

class ErrorBoundary extends React.Component {state = { hasError: false };static getDerivedStateFromError(error) {return { hasError: true };}componentDidCatch(error, info) {logErrorToService(error, info);}render() {if (this.state.hasError) {return <h1>Something went wrong.</h1>;}return this.props.children; }
}

使用方式:

<ErrorBoundary><MyComponent />
</ErrorBoundary>

注意

  • 无法捕获以下错误:
    • 事件处理函数
    • 异步代码
    • 服务端渲染
    • 错误边界自身抛出的错误

15. React 18 的新特性有哪些?

  1. 并发渲染(Concurrent Rendering)

    • 可中断渲染
    • 自动批处理更新
    • 过渡更新(startTransition)
  2. 新的 Root API

    const root = ReactDOM.createRoot(document.getElementById('root'));
    root.render(<App />);
    
  3. 新的 Hooks

    • useId:生成唯一 ID
    • useTransition:标记非紧急更新
    • useDeferredValue:延迟更新某些值
    • useSyncExternalStore:外部存储集成
    • useInsertionEffect:CSS-in-JS 库使用
  4. Suspense 增强

    • 支持数据获取
    • 服务端流式渲染
  5. 改进的自动批处理:更多场景下的自动批处理

http://www.hkea.cn/news/21094/

相关文章:

  • 什么网站做调查能赚钱关键词优化报价推荐
  • 网站开发职业认知小结开发一个app平台大概需要多少钱?
  • 装修公司全包项目seo搜索引擎实训心得体会
  • 爱站网是干什么的长沙关键词排名首页
  • wordpress 教垜四川seo推广公司
  • 东莞市阳光网青岛seo服务
  • 网站弹窗在中间位置企业培训师
  • 整站下载器 安卓版域名解析查询站长工具
  • 跨境自建站模板seo推广是做什么
  • 网站建设与网页设计报告网络营销师报名入口
  • 生成前端页面的网站东莞网络营销全网推广
  • 网站及单位网站建设情况免费男女打扑克的软件
  • 公司有网站有什么好处网上开店如何推广自己的网店
  • 海口网站建设策划关键词排名优化工具有用吗
  • 请问哪里可以做网站汕头seo
  • 访问国外网站速度慢苏州关键词seo排名
  • 做网站备案照片的要求谷歌seo教程
  • wordpress站点全屏新站如何让百度快速收录
  • wordpress 会议 主题推广排名seo
  • 源码开发网站建设sem与seo的区别
  • 如何查网站的空间防恶意点击软件
  • 单位网站建设收费标准互联网推广引流
  • 网站有中文源码加英文怎么做关键词歌词完整版
  • 建设网站企业银行做网站的平台
  • 如何进行网站建设分析网站推广app软件
  • 做ppt的软件模板下载网站网站服务公司
  • 网站icp备案认证怎么做谷歌网页版入口在线
  • 高安网站建设艺考培训
  • 主流的网站开发技术百度推广后台管理
  • 传奇网站模板免费下载优化网络搜索引擎