转发表明:创作者难于,需经许可,婉拒任何人形式的转发
现今网络控制技术产业发展快速,愈来愈多的Web应用领域须要提供更多简洁、高效率、迷人的采用者新体验。为的是同时实现而此最终目标,前端合作开发相关人员须要掌控各式各样控制技术和辅助工具。在那些控制技术和辅助工具中,React做为这款盛行的JavaScript库,获得了广为的应用领域和普遍认可。而React闭环中的服务器端库和模块,则更进一步多样了合作开发相关人员的辅助widget,使合作开发更为高效率、快捷。
1. React Joyride
React Joyride 用做为Web插件加进采用者鼓励和互动式讲义。它能协助您为采用者提供更多一类简单和有意思的形式,鼓励她们介绍您的插件的各部份和怎样采用它。
这是一类更让人不可思议的辅助工具,能向原有采用者展现新功能。
下列是React Joyride的采用实例:
1、加装React Joyride
npm install react-joyride –save2、导入React Joyride模块
import Joyride from react-joyride;3、表述关键步骤
const steps = [ { target: .my-element, content: This is my element, }, { target: .my-other-element, content: This is my other element, }, ];4、图形Joyride模块
在您的模块中,图形Joyride模块,并将关键步骤和其他属性做为属性传递:
<Joyride steps={steps} />5、启动Joyride
当您的模块加载时,Joyride不会自动启动。您须要调用Joyride模块的start()方法,以启动采用者鼓励:
<Joyride steps={steps} ref={c => (this.joyride = c)} /> … componentDidMount() {this.joyride.start(); }以上是React Joyride的一个简单实例。您能在其文档中找到更多采用实例和选项。
网站:
https://react-joyride.com/NPM:https://www.npmjs.com/package/react-joyride
2. React PDF Renderer
React PDF Renderer 是一个基于 React 的 PDF 图形库,它允许你采用 React 模块来创建和图形 PDF 文档。@react-pdf/renderer 提供更多了一些模块,如 View、Text、Image 等,那些模块和 React Native 中的模块类似,你能采用那些模块来组合并图形 PDF 页面。
下面是一些@react-pdf/renderer 库的采用场景和采用实例:
1、生成可打印的 PDF 报告
@react-pdf/renderer 能用作生成各式各样类型的 PDF 报告,如财务报告、销售报告、客户报告等。你能采用 View、Text 等模块来构建你的报告页面,最后将那些页面组合在一起,采用 @react-pdf/renderer 提供更多的 API 将其图形成 PDF 文件。下列是一个简单的实例:
import React from react; import { Document, Page, Text, View } from @react-pdf/renderer; const MyDocument = () => ( <Document> <Page> <View> <Text>Hello, world!</Text> </View> </Page> </Document> ); export default MyDocument;2、构建可下载的表单
你能采用@react-pdf/renderer 来构建可下载的表单,采用者能填写表单,然后将其下载为 PDF 文件。你能采用 Input、Button 等模块来构建你的表单页面。下列是一个简单的实例:
importReact, { useState }from react; import { Document, Page, Text, View, Input, Button } from @react-pdf/renderer; const MyDocument = () => { const [name, setName] = useState(); const handleSubmit = e =>{ e.preventDefault();// 将表单数据保存到数据库或其他地方 }; return ( <Document> <Page> <View> <Text>Enter your name:</Text> <Input value={name} onChange={e => setName(e.target.value)} /> <Button onClick={handleSubmit}>Download PDF</Button> </View> </Page> </Document> ); }; export default MyDocument;3、创建可视化报表 @react-pdf/renderer 能用作创建可视化报表,你能采用图表模块(如 PieChart、LineChart)来呈现你的数据。下列是一个简单的实例:
import React from react; import{ Document, Page, Text, View, PieChart }from @react-pdf/renderer; const MyDocument = () => { const data = [ { name: Apples, value: 20 }, { name: Oranges, value: 10 }, { name: Bananas, value: 15 }, ]; return ( <Document> <Page> <View> <Text>My Chart</Text> <PieChart data={data} /> </View> </Page> </Document>); }; export default MyDocument;网站:https://react-pdf.org/
NPM:https://www.npmjs.com/package/@react-pdf/renderer
3. React Beautiful DnD
react-beautiful-dnd 是一个基于 React 的轻量级拖放库,它提供更多了一个易于采用的 API,能轻松地同时实现拖放功能。你能采用 react-beautiful-dnd 来同时实现各式各样拖放功能,如列表重排、可拖动的面板、可拖动的表格行等等。
下面是一些 react-beautiful-dnd 库的采用场景和采用实例:
1、列表重排
react-beautiful-dnd 能用作同时实现可重排列表,如可拖动的任务列表、可拖动的购物车等等。下列是一个简单的实例:
import React, { useState } from react; import{ DragDropContext, Droppable, Draggable }from react-beautiful-dnd; const items = [ { id: 1, content: Item 1}, {id: 2, content: Item 2 }, { id: 3, content: Item 3 }, ]; const App = () => { const[stateItems, setStateItems] = useState(items);const onDragEnd = result => { if (!result.destination) { return; } constnewItems =Array.from(stateItems); const [reorderedItem] = newItems.splice(result.source.index, 1); newItems.splice(result.destination.index,0, reorderedItem); setStateItems(newItems); }; return ( <DragDropContext onDragEnd={onDragEnd}> <Droppable droppableId=“list”> {provided => ( <ul {…provided.droppableProps} ref={provided.innerRef}> {stateItems.map((item, index) => ( <Draggable key={item.id} draggableId={item.id} index={index}> {provided => ( <li {…provided.draggableProps} {…provided.dragHandleProps} ref={provided.innerRef} > {item.content} </li> )} </Draggable>))} {provided.placeholder}</ul> )} </Droppable> </DragDropContext> ); }; export default App;2、可拖动的面板
react-beautiful-dnd 能用作实现可拖动的面板,采用者能拖动面板以更改它的位置和大小。下列是一个简单的实例:
import React, { useState } from react; import{ DragDropContext, Droppable, Draggable }from react-beautiful-dnd; const items = [ { id: 1, content: Item 1, width: 200px, height: 100px }, { id: 2, content: Item 2, width: 300px, height: 150px }, { id: 3, content: Item 3, width: 250px, height: 120px }, ]; const App = () => { const [stateItems, setStateItems] = useState(items); constonDragEnd =result => { if (!result.destination) { return; } const newItems = Array.from(stateItems); const[reorderedItem] = newItems.splice(result.source.index,1); newItems.splice(result.destination.index, 0, reorderedItem); setStateItems(newItems); };return ( <DragDropContext onDragEnd={onDragEnd}> <Droppable droppableId=“list”> {provided => ( <div {…provided.droppableProps} ref={provided.innerRef}>{stateItems.map((item, index) => (<Draggable key={item.id} draggableId={item.id} index={index}>{(provided, snapshot) => (<div {…provided.draggableProps} {…provided.dragHandleProps} ref={provided.innerRef} style={{ …provided.draggableProps.style, width: item.width, height: item.height, }} > {item.content} </div> )} </Draggable>))} {provided.placeholder}</div> )} </Droppable> </DragDropContext> ); }; export default App;3、可拖动的表格行
react-beautiful-dnd 能用作同时实现可拖动的表格行,采用者能拖动表格行以更改它的顺序。下列是一个简单的实例:
import React, { useState } from react; import{ DragDropContext, Droppable, Draggable }from react-beautiful-dnd; const items = [ { id: 1, name: Item 1 }, { id: 2, name: Item 2 }, { id: 3, name: Item 3 }, ]; const App = () => { const[stateItems, setStateItems] = useState(items);const onDragEnd = result => { if (!result.destination) { return; } constnewItems =Array.from(stateItems); const [reorderedItem] = newItems.splice(result.source.index, 1); newItems.splice(result.destination.index,0, reorderedItem); setStateItems(newItems); };return ( <DragDropContext onDragEnd={onDragEnd}> <table> <thead> <tr> <th>ID</th> <th>Name</th> </tr> </thead> <Droppable droppableId=“list”> {provided => ( <tbody {…provided.droppableProps} ref={provided.innerRef}> {stateItems.map((item, index) => ( <Draggable key={item.id} draggableId={item.id} index={index}>{(provided, snapshot) => (<tr {…provided.draggableProps} {…provided.dragHandleProps} ref={provided.innerRef} style={{ …provided.draggableProps.style, backgroundColor: snapshot.isDragging ? lightgreen : white, }} > <td>{item.id}</td> <td>{item.name}</td> </tr> )} </Draggable> ))} {provided.placeholder} </tbody> )} </Droppable> </table> </DragDropContext> ); }; export default App;以上是 react-beautiful-dnd 库的一些采用场景和采用实例。采用 react-beautiful-dnd 库能使你的插件更具互动性和可操作性。
网站:
https://react-beautiful-dnd.netlify.app/NPM:https://www.npmjs.com/package/react-beautiful-dnd
4. Material UI
这是一个React UI 框架,提供更多了大量的模块和样式,能用作构建 Web 插件的前端界面。它是 Material Design 设计语言的同时实现,具有可定制性和响应式设计等特点,适用作构建从简单的单页应用领域到复杂的企业级插件等多种场景。
下列是采用 material UI 构建一个简单表单的实例代码:
import * asReactfrom react; import TextField from @mui/material/TextField; import Button from @mui/material/Button; import Box from @mui/material/Box; import { styled } from @mui/material/styles; const FormBox = styled(Box)({ display: flex, flexDirection:column, gap: 16px, }); export default function App() { const handleSubmit = event=> {event.preventDefault(); const data = new FormData(event.currentTarget); console.log({ name: data.get(name), email: data.get(email), password: data.get(password), }); }; return ( <Box sx={{ display: flex, justifyContent: center, alignItems: center, height: 100vh}}> <form onSubmit={handleSubmit}> <FormBox> <TextField required name=“name” label=“Name”/> <TextField required type=“email” name=“email” label=“Email” /> <TextField required type=“password” name=“password”label=“Password” /> <Button variant=“contained” type=“submit”> Submit </Button> </FormBox> </form> </Box> ); }在这个实例中,我们导入了 TextField 和 Button 模块,那些模块能直接从 @mui/material 中导入。然后,我们采用 styled 函数对 Box 模块进行了样式定制,定义了一个 FormBox 模块来包裹表单控件。在 App 模块中,我们表述了一个 handleSubmit 函数,用作处理表单提交事件,最后采用 Box 模块进行布局。
除此之外,material UI 还提供更多了大量的模块和辅助工具,例如 AppBar、Drawer、Dialog、Table、Grid、Typography 等等,能通过 import 语句导入并在插件中采用。另外,material UI还提供更多了大量的主题和样式定制选项,能满足不同的设计需求。
网站:https://material-ui.com/
NPM:https://www.npmjs.com/package/@mui/material
5. Swiper.js
Swiper.js,顾名思义,是一个库,协助您在 React 插件中创建可滑动的界面,能很方便地将Swiper集成到React应用领域中,采用起来非常简单。
Swiper适用作任何人须要展现图片或其他类型的轮播内容的场景,例如:
网站首页的广告轮播商品详情页面的图片展现艺术作品展现页面的幻灯片新闻文章的图集展现下面是一个基本的采用实例:
import { Swiper, SwiperSlide } from swiper/react; import swiper/swiper-bundle.min.css; function App() { return (<Swiper> <SwiperSlide> <img src=“image1.jpg” alt=“image1” /> </SwiperSlide> <SwiperSlide> <img src=“image2.jpg” alt=“image2” /> </SwiperSlide> <SwiperSlide> <img src=“image3.jpg” alt=“image3” /> </SwiperSlide> </Swiper> ); }在这个实例中,我们首先导入了Swiper的React模块和样式文件。然后创建了一个Swiper模块,并在其中加进了三个SwiperSlide模块。每个SwiperSlide中包含一个图片元素,展现了不同的图片。
Swiper还提供更多了很多其他的选项和自表述功能,能根据须要进行配置和采用。例如,能设置自动播放、加进导航按钮、设置轮播速度等。
网站:
https://swiperjs.com/reactNPM:https://www.npmjs.com/package/swiper
6. React Query
采用场景:
大提高插件的性能。实时数据更新:React Query还支持实时数据更新,您能采用它来订阅实时数据更改,和采用缓存和乐观更新来提高性能和响应速度。采用实例:
1、基本采用
import{ useQuery }from @tanstack/react-query; function App() { const { isLoading, error, data } = useQuery(todos, () => fetch(https://jsonplaceholder.typicode.com/todos).then(res =>res.json() ) );if (isLoading) return Loading…; if (error) return An error has occurred: + error.message; return ( <ul> {data.map(item => ( <li key={item.id}>{item.title}</li> ))} </ul> ); }这里采用useQuery钩子来获
2、采用缓存
import { useQuery, queryCache } from @tanstack/react-query; function App() { const [userId, setUserId] = useState(1); const{ isLoading, error, data } = useQuery( [todos, userId], () => fetch(`https://jsonplaceholder.typicode.com/todos?userId=${userId}`).then(res => res.json()), { cacheTime: 60000} );if (isLoading) return Loading…; if (error) return An error has occurred: + error.message; return ( <div> <button onClick={() => setUserId(userId => userId + 1)}>Next user</button> <ul> {data.map(item => ( <li key={item.id}>{item.title}</li> ))} </ul> </div> ); }这里采用了带有缓存的useQuery钩子,采用了查询键来表示userId。当采用者更改时,数据
3、实时数据更新
首先,在 App.js 中,我们导入 useQue
import { useQuery, useMutation } from react-query; import axios from axios; const fetchUser = async () => { const res = await axios.get(/api/user); return res.data; } function App() { // useQuery hook to get user data const{ data: user, isLoading, isError } = useQuery(user, fetchUser); // useMutation hook to update user data const[updateUser] = useMutation(async (updatedUser) => { const res = await axios.put(/api/user, updatedUser); return res.data; }); // handler for updating user data const handleUpdateUser = (e) => { const{ name,value } = e.target; updateUser({ …user, [name]: value }); }; // render user data and update form return( <div> {isLoading ? ( <div>Loading…</div> ) : isError ? ( <div>Error loading data.</div> ) : ( <div> <h1>User Data</h1> <p>Name: {user.name}</p> <p>Email: {user.email}</p> <form> <label> Name: <input type=“text” name=“name” value={user.name} onChange={handleUpdateUser} /> </label> <label> Email: <input type=“email” name=“email” value={user.email} onChange={handleUpdateUser} /> </label> </form> </div> )} </div> ); }constexpress =require(express); const bodyParser = require(body-parser); constapp = express(); app.use(bodyParser.json());let user = { name: John, email: [email protected], };// GET /api/user route to get user data app.get(/api/user, (req, res) =>{ res.send(user); });// PUT /api/user route to update user data app.put(/api/user, (req, res) =>{ user = req.body; res.send(user); }); app.listen(5000, () => console.log(Server started on port 5000));ook 来更新采用者数据。我们还表述了一个 handleUpdateUser 函数,它会在表单数据发生变化时被调用,并通过 updateUser 函数来更新采用者数据。当采用者数据更新成功后,React Query 会自动更新 user 数据并重新图形模块,从而同时实现实时数据更新的效果。
网站:
https://tanstack.com/query/latest/NPM:https://www.npmjs.com/package/@tanstack/react-query
7. React Spring
React Spring 是一个用作构建高性能动画效果的 JavaScript 库,它基于 React,可以让你轻松创建简洁、有意思和自然的互动式采用者界面。
采用场景
React Spring 能用作多种场景,包括但不限于:
页面过渡效果:在页面之间进行平滑的过渡动画。滚动效果:在滚动时为页面元素加进自然的视觉效果。拖拽和手势交互:为采用者的拖拽和手势操作加进简洁的动画效果。模块动画:为 React 模块加进动画效果,比如 Modal 弹框出现时的动画效果。采用实例
1、弹簧动画
弹簧动画是 React Spring 最常用的动画之一,通过改变模块的状态值,使模块具有动态的、弹簧般的过渡效果。
import { useState } from react; import { useSpring, animated } from react-spring; function App() { const [open, setOpen] = useState(false); const props = useSpring({ opacity: open ?1 : 0 }); return ( <div onClick={() => setOpen(!open)}> <animated.div style={props}>Hello, world!</animated.div> </div> ); }在这个例子中,通过 useSpring 钩子函数创建了一个动画对象 props,并将其应用领域到了 animated.div 模块的 style 属性上。当 open 状态为 true 时,animated.div 模块将会逐渐变为可见状态,出现一个弹簧动画的过渡效果。
2、渐变动画
渐变动画是一类常用的动画效果,通过改变颜色的值来同时实现。
import { useState } from react; import { useSpring, animated } from react-spring; function App() { const[hover, setHover] = useState(false); const props = useSpring({ color: hover ? red : blue }); return ( <animated.div onMouseOver={() =>setHover(true)} onMouseOut={() => setHover(false)} style={props} > Hello, world!</animated.div> ); }在这个例子中,通过 useSpring 钩子函数创建了一个动画对象 props,并将其应用领域到了 animated.div 模块的 style 属性上。当鼠标经过 animated.div 模块时,模块的颜色值将会逐渐变为红色,出现一个渐变动画的过渡效果。
网站:https://react-spring.io/
NPM:https://www.npmjs.com/package/react-spring
结束
以上七个库各自有着独特的功能和特点,能解决我们在前端合作开发中的不同需求。本文中对每个库进行了简要的介绍,并提供更多了相应的采用实例。当然,那些库也只是 React 生态系统中的冰山一角,我们还能根据实际需求去寻找更适合自己的库。希望本文能够对您在日常合作开发中的工作有所协助。
,敬请期待。