react16的新特性

react 16 的好处:

1:新的核心算法 Fiber

react 新的算法,更加友好;

2:render可以return数组 ,字符串

可以return数组 不需要包div; 但是必须有对应的key;

3:错误处理机制

增加了抛异常的生命周期函数

  componentDidCatch(err,info){

        this.setState({isError:1});
    }

 这样页面报错 我们就可以委婉的换个方式展示了~~!!1

4:Portals组件

弹窗组件; 是body的儿子节点,不是嵌套在组件内的组件;

5:更好更快的服务端渲染

服务端使用流的方式使得  提升了服务端的渲染 速度增快三倍 ;

renderToString()到renderToNodeStream();

要该改写页面;

  //首先 的话 先把第一节 代码书写带前端
    res.write(`<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
            <meta name="theme-color" content="#000000">
                <link rel="stylesheet" href=${assetmanifest["main.css"]}>
                  
                        <title>51job</title>
    </head>
    <body>
    <div id="root">`);

    const markUpStream=ReactDOMServer.renderToNodeStream((
        
            <Provider store={store}>
                <StaticRouter
                context={context}
                location={req.url}
                >
                    <App/>
                </StaticRouter>
            </Provider>

        )
    );

    //第二步,把markUpStream 推到res上 ,并且声明没有结束;
    markUpStream.pipe(res,{end:false});

    //第三步;监听markUpStream 结束事件 ;
     markUpStream.on("end",()=>{
        res.write(`</div>
    </body>
    <script src=${assetmanifest["main.js"]}></script>
    </html>`); 
        //最后结束渲染;
        res.end()
    })

并且 前端展示的react-dom的render方法就不能用了需要 改写为:hydrate;

首先说一下为什么使用hydrate而不是render,这个是react 16版本中的一个变更,hydrate主要是用于给服务端渲染出的html结构进行“注水”,由于新版本中ssr出的dom节点不再带有data-react,为了能尽可能复用ssr的html内容,所以需要使用新的hydrate方法进行事件绑定等客户端独有的操作。

6:体积更小;MIT协议;

减少体积30%; MIT完全开源;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值