5个很棒的 React.js 库,值得你亲手试试!

React在过去几年变得越来越受欢迎。随之而来的是越来越多的库的发布,给我们带来了新的可能性,但最重要的是让开发这工作变得越来越简单。

在本文中,介绍 5 个 React 库,希望能给你带来一些帮助。

1. react-portal

我认为React中的 Portals(传送门) 对大多数人来说都很熟悉,即使它们很少被使用。下面是 Reac t文档中对它们的描述:

Portal 提供了一种将子节点渲染到存在于父组件以外的 DOM 节点的优秀的方案。

通常,我们的整个 React 应用程序都是在HTML中的一个 DOM 节点中渲染的。但是通过portals,我们可以定义附加的节点,在这些节点上我们可以挂载应用程序的各个部分,例如单个独立的组件。

然而,在官方文档中,门户以一种相当麻烦和复杂的方式进行描述,这就是也 react-portal 出现的一个原因。

现在是 react-portal 用法:

 
 
 
 
  1. import { Portal } from ‘react-portal’ 
  2.  
  3.   

    This is portaled into the portal div!

     
  4.  

只需使用 选择器(如getElementById)将HTML代码中的portal容器作为目标,就可以了。

在React.js应用程序的public/index.html文件中:

 
 
 
 
 
  •  

    如上所见,每个React应用程序所需的根元素都像往常一样存在,使用了portal我们就可以将元素指定到与根同级的位置。

    当然,我们也可以动态切换portal

     
     
     
     
    1. {this.state.show ? ( 
    2.       
    3.     

      Portal content

       
    4.    
    5. ) : null} 

    2. react-toastify

    在现代web开发中,为终端用户提供动态信息是绝对必要的。不幸的是,JavaScript 中的alert()函数不是实现此目的的好选择,这一点大家都很清楚,所以才会出现各种各样的 UI 库。

    这里介绍一个 React 提示插件 react-toastify ,它是一个很小且可自定义的库,以下是官方给出的事例:

    用法如下:

     
     
     
     
    1. import { ToastContainer, toast } from 'react-toastify' 
    2. import 'react-toastify/dist/ReactToastify.css' 
    3. toast.configure({ 
    4.   autoClose: 2000, 
    5.   draggable: false, 
    6.   position: toast.POSITION.TOP_LEFT 
    7. }) 
    8. const notify = () => toast('Wow so easy !') 
    9.  
    10. const App = () => ( 
    11.    
    12.     Notify ! 
    13.   
     
  • 一步一步说下:

    更酷的功能:

    我们还可以在toast中放入JSX:

     
     
     
     
    1. const notify = () => toast(

      Big Text

    autoClose可以替换为false,因此它永远不会自动关闭。

    3. react-contextmenu

    很难想象没有上下文菜单的应用,这在网站上也是很不寻常。这不再是因为越来越多的Web应用程序接近真实的桌面应用程序,而这些应用程序通常已经提供了类似的良好性能和许多功能,而这些功能是我们多年前从未期望过的。

    这些功能之一是用户对右键单击的评估,这种评估在网站上越来越多地使用。当然,那些是带有许多UI元素的更复杂的控件。

    通常用于显示所谓的上下文菜单,为此目的,有一个非常方便的React.js库。用法如下:

     
     
     
     
    1. import React from 'react' 
    2. import { ContextMenu, MenuItem, ContextMenuTrigger } from 'react-contextmenu' 
    3.  
    4. const App = () => ( 
    5.      
    6.          {/* ID for every instance must be individual */}  
    7.             

      Right click on me!

       
    8.          
    9.  
    10.          
    11.              alert('first ')}> 
    12.                  
    13.              
    14.  
    15.              alert('second')}> 
    16.                  
    17.              
    18.          
    19.      
    20.  
    21. export default App 

    < ContextMenuTrigger>是我们需要右键单击以切换菜单的组件。菜单本身是在 包装器中定义的。对于每个项,都有一个 组件,我们可以给它一个onClick事件来处理我们的用户输入。

    4. react-lazy-load-image-component

    在我们的网站上展示大量的图片需要一段时间。通常,已加载和突然出现的图片会导致用户对UI产生不愉快的体验,当然我们希望避免这种情况。

    一个为用户优化有关图像的所有功能的强大库是response-lazy-load-image-component。我们不仅可以创建一个良好的模糊效果,就像我下面的例子,以桥梁加载的图像,但我们也可以延迟加载图像。这可以在下面的官方示例中看到:

    5. react-onclickoutside

    用户界面设计的一个重要规则是,认真评估尽可能多的用户输入。每个人都应该清楚这一点,但是有时可能很难将这样的东西实现为代码。

    一个可以想象的例子是用户折叠的菜单。如果你想再次关闭它,90%的用户倾向于简单地点击网站的死区(即那些本身不会产生反应的元素)。在几乎所有的专业网站上,这是完全相同的。要关闭菜单,只需再次单击它的旁边,而不是直接在它上切换。

    有一个库可以满足这类的操作,它就是response-onclickoutside,它允许我们处理实际元素之外的单击事件。

    在下面的示例中,你可以看到我们如何为一个简单的h1和button实现此功能。仅当单击除这两个之外的任何内容时,console.log才会输出。处理此事件的函数必须调用handleClickOutside。

     
     
     
     
    1. import React, { Component } from 'react' 
    2. import onClickOutside from 'react-onclickoutside' 
    3.  
    4. class App extends Component { 
    5.     handleClickOutside = evt => { 
    6.         console.log('You clicked outside!') 
    7.     } 
    8.  
    9.     render() { 
    10.         return ( 
    11.             
       
    12.                 

      Click outside!

       
    13.                  
    14.              
    15.         ) 
    16.     } 
    17.  
    18. export default onClickOutside(App) 

     

    新闻标题:5个很棒的 React.js 库,值得你亲手试试!
    网页URL:http://www.csdahua.cn/qtweb/news18/375668.html

    网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网

    成都快上网为您推荐相关内容

    网站导航知识

    分类信息网站