zoukankan      html  css  js  c++  java
  • react面试笔录

    react面试总结
     
    react内容
     
    1.生命周期
    生命周期:
        1、mounting挂载阶段
            1、constructor
            2、componentWillMount
            3、render
            4、componentDidMount
        2、updating更新阶段
            props:
            1、componentWillReceiveProps(nextProps):接收到新的属性时(未更新)触发的钩子。nextProps接收到的最新的属性。
            2、shouldComponentUpdate(nextProps,nextState):判断是否要更新你的数据(属性,状态),必须要提供一个布尔返回值,true更新,false不更新
            3、componentWillUpdate(nextProps,nextState):更新数据之前next是要更新内容
            4、render();
            5、componentDidUpdate(preProps,preState):更新数据之后 pre是更新完成之前的内容。
            state:
            1、shouldComponentUpdate(nextProps,nextState):判断是否要更新你的数据(属性,状态),必须要提供一个布尔返回值,true更新,false不更新
            2、componentWillUpdate(nextProps,nextState):更新数据之前next是要更新内容
            3、render();
            4、componentDidUpdate(preProps,preState):更新数据之后 pre是更新完成之前的内容。
        3、unmounting卸载阶段
        componentWillUnmount
     
    2.路由的基本用法:
    Navlink:
            to:指定的是跳转的地址
            exact:值是一个布尔值,用于是否为精确匹配
            activeStyle:选中style样式
            activeClassName:选中的样式
    Route:
            path:地址,当你的地址与该属性相同时,会使用该路由下的组件
            component:指定组件
            exact:是否精确匹配
    BrowserRouter:
            basename:为路由增加前缀
            forceRefresh:是一个布尔值,用于强制刷新,当你每跳转一次路由,即要与你的服务器进行请求
     
    3. 路由传值的三种方式:
    1、设置path
    <Router>
         <nav>
           <NavLink to={"/ONE/1/2"}  activeStyle={{color:"red"}}>ONE</NavLink>
        </nav>
        <Switch>
          <Route path={"/one/:a/:b"} component={One}></Route>
        </Switch>
    </Router>
        接收:
            this.props.match.params.a
            this.props.match.params.b
        优点:
            刷新数据还在
        缺点:
            不能够直接传递对象。
    2.query
    在你的NavLink属性to的值设为对象。将你要传递的参数作为该对象的属性。
    <Router>
        <nav>
            <NavLink to={{
                pathname:"/two",
                xixi:"haha",
                query:{
                    a:1,
                    b:2
                }
            }}  activeStyle={{color:"red"}}>Two</NavLink>
        </nav>
        <Switch>
            <Route path={"/two"} component={Two}></Route>
        </Switch>
    </Router>
    接收:
        this.props.location.query.a
        this.props.location.query.b
        this.props.location.xixi
    优点:
        可以传递对象
    缺点:
        刷新数据丢失
    3.state
    <Router>
            <nav>
                <NavLink to={{
                    pathname:"/three",
                    state:{
                        c:1,
                        d:2
                    }
                }}>Three</NavLink>
            </nav>
            <Switch>
                <Route path={"/three"} component={Three}></Route>
            </Switch>
        </Router>
    接收:
            this.props.location.state.c
            this.props.location.state.d
        优点:
            可以传递对象,刷新数据还在
        缺点:
            重新打开标签,数据不在。
     
    4.为什么说虚拟dom会提高性能?
    虚拟dom相当于再js和真实dom之间加了一个缓存,利用diff算法避免了没有必要的dom操作,从而提高性能;
     
    5.受控组件和非受控组件
        (表单元素是否受组件控制) 一般推荐受控组件   数量少的可以用非受控
    1、受控组件
        由react进行限制的表单元素称为受控组件。
        1、需要将value与内部的state进行绑定。
        2、配合onChange事件修改你的state,从而改变value
        场景:将需要数据与视图进行同步时。
    2、非受控组件
        直接通过DOM操作的组件称为非受控组件
        1、不需要与你的state进行绑定
        2、设置ref.   通过this.refs.refname
     
    6.高阶组件(HOC)
           本质是一个函数   接收一个组件,返回一个新组件
                a.在返回的新组件里渲染接收到的组件
                b.将数据通过props  传递给接收到的组件
                c.被高阶组件处理过的组件   一般通过props  接收数据
    HOC 可以用于以下许多用例
    • 代码重用、逻辑和引导抽象
    • 渲染劫持
    • state 抽象和操作
    • props 处理
     
    7.使用 React Hooks 好处是啥?
        什么是react HOOKS?
    Hooks是 React 16.8 中的新添加内容。它们允许在不编写类的情况下使用state和其他 React 特性。使用 Hooks,可以从组件中提取有状态逻辑,这样就可以独立地测试和重用它。Hooks 允许咱们在不改变组件层次结构的情况下重用有状态逻辑,这样在许多组件之间或与社区共享 Hooks 变得很容易。
        使用的好处:
        首先,Hooks 通常支持提取和重用跨多个组件通用的有状态逻辑,而无需承担高阶组件或渲染 props 的负担。Hooks 可以轻松地操作函数组件的状态,而不需要将它们转换为类组件。
    Hooks 在类中不起作用,通过使用它们,咱们可以完全避免使用生命周期方法,例如 componentDidMount、componentDidUpdate、componentWillUnmount。相反,使用像useEffect这样的内置钩子。
     
     
     
     
     
     
     
  • 相关阅读:
    借用构造函数实现继承
    原型链
    创建对象 之 组合使用构造函数模式和原型模式
    6.原型对象的问题
    Spring MVC
    AOP
    谈谈对Spring IOC的理解
    Mybatis3.x与Spring4.x整合(转)
    手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
    Appweb写法
  • 原文地址:https://www.cnblogs.com/wangwenxin123/p/13251438.html
Copyright © 2011-2022 走看看