IT评测·应用市场-qidao123.com技术社区

标题: React [打印本页]

作者: 北冰洋以北    时间: 2024-9-22 21:55
标题: React
生命周期
旧的                                                   新的
初始化阶段
在willMount中订阅事件,在服务端并不会实行willUnMount事件,也就是说服务端会导致内存泄漏
更新阶段

WillReceiveProps中判断前后两个 props 是否雷同,如果不同再将新的 props 更新到相应的 state 上去。这样做一来会粉碎 state 数据的单一数据源,导致组件状态变得不可猜测,另一方面也会增长组件的重绘次数。
卸载组件: componentWillUnmount()

getDerivedStateFromProps:静态方法,不能访问实例this,只接收两个参数,和componentDidUpdate一起使用
getSnapshotBeforeUpdate:会在最终确定的render实行之前实行,也就是能保证其获取到的元素状态与didUpdate中获取到的元素状态雷同

https://juejin.cn/post/7285540804734468150?searchId=20240919153415D2A71699E90CF6190D35
1.你知道哪些React hooks?


useContext是一个 React Hook,在组件的顶层调用useContext,可以让你读取和订阅组件中的context
总是在调用它的组件上面寻找最近的 provider。它向上搜索,不思量调用useContext()的组件中的 provider
export const StateContext = createContext({});
<StateContext.Provider value={useReducer(reducer, initialState)}]]>
{children}
</StateContext.Provider]]>
export const useStateValue: () => any = () => useContext(StateContext)或者StateContext.Consumer;
Hooks-9个
useState:来添加状态
useEffect:处理副作用--浏览器重新绘制屏幕之后 异步触发的。不会壅闭组件的渲染过程
useLayoutEffect:处理副作用--浏览器重新绘制屏幕之前触发 同步触发的。可以壅闭组件的渲染过程
useContext:使用上下文,减少组件层
useMemo:必要return.   Hook用于缓存盘算效果,好比进来盘算页面的头部高度、以及传递过来的参数是否全屏,react.memo但是对props是浅比力,两个参数callback,deps
const layoutPadding = getQueryVariable('shareFlag') == 1 ? 0 : useMemo(() => {
              return statusBarHeight + 44
         }, [statusBarHeight])
useCallback:用于缓存函数实例--
useRef:用于引用 DOM 元素或者存储可变的值
useReducer‌: 处理复杂逻辑,通过dispatch函数更新状态
useDebugValue‌: 表现自界说调试信息(已弃用)

Hooks

规则:只能在函数组件的最顶层使用钩子。不要在循环、条件判断或者子函数中调用钩子
react父子组件传值

const messageReducer = ()
store =createStore(messageReducer)
useSelector 和 useDispatch 访问和更新状态
redux:实用于所有Vue项目也能使用,创建store文件夹 reducer.js。
  function reducer(state=[],action) {}  function reducer2(state=[],action) {}
  export default combineReduces({reducer,reducer2})
创建index.js  const store = createStore(reducer)
页面直接引入路径,store.getState()、  store.dispath({type:'',参数:''})
Reducer:一个数据绑定一个,多个绑定多个,两个关联的使用combineReduces({reducer,reducer2})
插件有
React-Redux

react-redux:
    组件中
    import
    function Third(props){console.log(props)  return(<div>你好</div>)}
    在function外面重新界说怎样关联
    const mapStateProps = (state) =>{return {..state}}
const actionObj = {
        removeGoods(goods){
              return {type: 'removeGoods', goods:goods}
        }
}
    export default  connect(mapStateProps,actionObj)(Third)
reduxjs/toolkit

redux使用的插件。@reduxjs/toolkit  createSlice
const numReducer = createSlice({
name: 'num',
initialState:0,
reducers:{
  // 不必要担当type
    add:function(state, action){
        return state++
    }
    }
})
export const {add}=numReducer.actions
store/Index.js
import {buyListReducer,numReducer} from "./reducer";
import { configureStore } from "@reduxjs/toolkit";
const store = configureStore({
    reducer:{
          num: numReducer.reducer
      }
  })
export default store

页面使用。useDispatch()

受控组件和非受控组件有什么区别?

受控组件是状态由 React 控制的组件。组件接收其当前值并通过 props 更新它。当值改变时它也会触发回调函数。这意味着该组件不存储其自己的内部状态。相反,父组件管理该值并将其传递给受控组件。
不受控制的组件使用 refs 或其他方法在内部管理自己的状态。它们独立存储和更新状态,不依赖 props 或回调。父组件对不受控组件的状态控制较少

基于类的 React 组件和函数式 React 组件有什么区别?

类的组件React.Component。使用render方法返回界说组件输出的 JSX 。访问组件生命周期方法和状态管理this.setState()
函数组件被以为更简单、更容易阅读和测试 。他们担当 props 作为参数并直接返回 JSX。功能组件无权访问生命周期方法或状态。然而,随着 React 16.8 中 React Hooks 的引入,功能组件如今可以管理状态并使用其他功能,比方上下文和效果

组件的生命周期方法有哪些?


 React 中的 props 是什么?

Props 是从父组件传递给组件的数据。props 是只读的,无法更改
状态管理器: React Context,Redux
Redux中的reducer是什么,它有哪些参数?

reducer是一个纯函数,以 state 和 action 为参数。在reducer中,我们会跟踪接收到的操纵类型,并根据它修改状态,返回一个新的状态对象

什么是 Action,怎样更改 Redux 中的状态?异步怎样处理?

Action:是发起状态变更的一种方式,本质上它是一个普通的JavaScript对象,Action 是不可变的,这意味着一旦创建,Action 对象就不应被修改。每个 Action 都有一个必需的 type 属性,通过 payload 属性
使用中间件:在Redux 中处理异步操纵必要中间件,比方 Redux Thunk 或 Redux Saga。这些中间件允许你编写返回函数或生成器的 Action Creator

Redux 实现了哪种模式?

Flux模式,引入单向数据流和应用步调状态的集中存储来帮助管理应用步调的状态

什么是JSX?

默认情况下,在 react 中使用以下语法创建元素
const someElement = React.createElement('h3',{className: 'title__value'},'Some Title Value')
但我们通常这样去写:
const someElement = (<h3 className='title__value']]>Some Title Value</h3]]>);
这正是被称为 jsx 的标记。这是一种语言扩展 简化了代码和开辟的感知
什么是 Props 透传?

Props 透传是指通过多层嵌套组件传递 props 的过程,纵然某些中间组件不直接使用这些 props。这可能会导致代码结构复杂且繁琐
什么是React上下文?

多个未通过道具直接连接的组件之间共享数据时,上下文就非常有用
由三个主要部门组成:
通过使用 React Context,可以避免props 透传(通过多级组件传递props),并在更高层次上轻松管理状态,从而使代码更有条理、更高效

useContext 的用途是什么?它是怎样工作的?

在范例的 React 应用步调中,数据是使用道具从上到下(从父组件到子组件)传递的。但是,这种使用方法对于某些类型的道具(比方所选语言、用户界面主题)来说可能过于繁琐,因为这些道具必须传递给应用步调中的很多组件
上下文提供了一种在组件间共享此类数据的方法,而无需明确地将道具传递到树的每一层。 当上下文值发生变化时,调用 useContext 的组件总是会被重新渲染

什么是React Fragment?

<></>:创建不必要的节点

什么是React调和

调和是 React 的一种算法,用于区分一棵元素树和另一棵元素树,以确定必要替换的部门。 调和是我们已往所说的虚拟 DOM 背后的算法

为什么使用map()时必要key?

这些键可帮助 React 确定哪些元素已被更改、添加或移除。必须指定这些键,这样 React 才能匹配 数组元素。选择键的最佳方法是使用一个能将列表项与其相邻项明确区分开来的字符串

怎样访问DOM元素?

使用 React.createRef() 或 useRef() 钩子创建的,并通过 ref 属性附加到 React 元素上。通过访问创建的引用,我们可以使用 ref.current 访问 DOM 元素

什么是自界说钩子?

自界说钩子是一种允许您在不同组件之间重复使用逻辑的功能。它是一种封装可重用逻辑的方法,以便在多个组件之间轻松共享和重用。自界说钩子是通常以 *use * 开头的函数,可在必要时调用其他钩子

创建自界说钩子的规则是什么?


什么是SSR(服务器端渲染)

服务器端渲染(SSR)是一种用于在服务器上渲染网页并将完全渲染后的网页发送到客户端表现的技术。它允许服务器生成网页的完整 HTML 标记,包括动态内容,并作为对哀求的响应发送给客户端
SSR 常用于 React 的 Next.js 和 Vue.js 的 Nuxt.js 等框架和库中,以启用服务器端呈现功能。这些框架会为您处理服务器端呈现逻辑,从而更容易实现 SSR

使用SSR有什么好处?



你知道哪些 React 架构解决方案?



你知道Next.js的主要功能有哪些?

getStaticProps:此方法用于在构建时获取数据并将页面预渲染为静态 HTML。它确保数据在构建时可用,并且不会因后续哀求而更改
getServerSideProps:该方法用于在每次哀求时获取数据并在服务器上预渲染页面。当您必要获取可能经常更改或特定于用户的数据时,可以使用它
getStaticPaths:此方法用于动态路由中,以指定应在构建时预渲染的路径列表。它通常用于获取带有参数的动态路由的数据

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4