当前位置:首页 >焦点 >结合使用React和其他技术的七种方法 React有很强的结合适应性

结合使用React和其他技术的七种方法 React有很强的结合适应性

2024-06-30 20:25:59 [百科] 来源:避面尹邢网

结合使用React和其他技术的结合七种方法

译文 作者: 布加迪 开发 前端 React的优点之一是它能与其他技术很好地结合使用。不妨了解可与这种框架结合使用的使用术几个最佳工具。

点击参加51CTO网站内容调查问卷

译者 | 布加迪

审校 | 重楼

结合使用React和其他技术的七种方法 React有很强的结合适应性

React是其技一种知名的JavaScript库,可以用它来为用途广泛的种方Web应用程序开发UI。React有很强的结合适应性,可以将它与其他技术结合起来,使用术构建更强大、其技更有效的种方应用程序。

结合使用React和其他技术的七种方法 React有很强的结合适应性

结合使用React和其他技术的七种方法 React有很强的结合适应性

不妨了解如何将React与各种技术结合起来,结合以便集诸多优点于一体。使用术

1. React + Redux

Redux是其技一个与React结合使用的状态管理库。Redux便于集中式应用程序状态管理。种方当构建有许多状态的结合复杂应用程序时,React和Redux可以很好地协同工作。使用术

下面这个示例说明了如何结合使用React和Redux:

import React from 'react';import {  createStore } from 'redux';import {  Provider } from 'react-redux';const initialState = {  count: 0 };function reducer(state = initialState,其技 action) {  switch (action.type) {  case 'INCREMENT': return {  count: state.count + 1 }; case 'DECREMENT': return {  count: state.count - 1 };default: return state;}}const import React from 'react';import {  useQuery, gql } from '@apollo/client';const GET_USERS = gql`query GetUsers { users { idname}};function Users() { const {  loading, error, data } = useQuery(GET_USERS);if (loading) return <p>Loading...</p>;if (error) return <p>Error :(</p>;return (store = createStore(reducer);function Counter() { const count = useSelector(state => state.count);const dispatch = useDispatch();return (<div><p>Count: { count}</p><button onClick={ () => dispatch({  type: 'INCREMENT' })}>+</button><button onClick={ () => dispatch({  type: 'DECREMENT' })}>-</button></div>);}function App() { return (<Provider store={ store}><Counter /></Provider>);}export default App;

该示例创建了一个初始状态为0的Redux存储。然后,reducer函数处理INCREMENT操作和DECREMENT操作。代码使用useSelector和useDispatch钩子来获取进行中的计数,并单独分派活动。

最后,为了使整个应用程序可以访问该存储,将计数器组件包装在提供者组件中。

2.结合Next.js用于服务器端渲染

Next.js是一个开发框架,通过向客户端传输HTML和使用React组件的服务器端渲染,以优化网站速度和搜索引擎优化(SEO)策略。

其强大的工具集可以与React协同工作,提供出色的性能和高搜索引擎排名。

// pages/index.jsimport React from 'react';function Home() {  return ( <div> <h1>Hello, World!</h1> <p>This is a server-rendered React component.</p> </div> );}export default Home;

在该示例中,您描述了一个名为Home的React组件。Next.js在服务器上渲染时,会生成一个含有该组件内容的静态HTML页面。当页面收到来自客户端的访问时,它会将HTML发送到客户端并hydrate组件,使其能够作为动态React组件来运行。

3.结合GraphQL以获取数据

GraphQL是一种API查询语言,它提供一种熟练、强大且适应性强的REST替代方案。借助GraphQL,您可以更快地获取数据,更快地更新用户界面。

这个示例说明了结合使用React和GraphQL的方法:

import React from 'react';import {  useQuery, gql } from '@apollo/client';const GET_USERS = gql`query GetUsers { users { idname}};function Users() { const {  loading, error, data } = useQuery(GET_USERS);if (loading) return <p>Loading...</p>;if (error) return <p>Error :(</p>;return (<ul>{ data.users.map(user => (<li key={ user.id}>{ user.name}</li>))}</ul>);}function App() { return (<div><h1>Users</h1><Users /></div>);}export default App;

该示例从@apollo/client库调用useQuery函数,以便从GraphQL编程接口获取客户端的概要。用户列表随后显示在UI中。

4.结合CSS-in-JS用于样式

CSS-in-JS是一种基于Javascript的React组件样式化方法。它简化了管理复杂样式表的工作,并允许您以模块化和基于组件的方式编写样式。

下面这个示例说明了如何结合使用React和CSS-in-JS:

import React from 'react';import styled from 'styled-components';const Button = styled.button` background-color: #007bff; color: #fff; padding: 10px 20px; border-radius: 5px; font-size: 16px; cursor: pointer; &:hover {  background-color: #0069d9; };function App() {  return ( <div> <Button>Click me!</Button> </div> );}export default App;

这个例子使用styled函数创建了样式按钮组件。它定义了按钮的体验色调、文本色调、缓冲、线扫描、文本尺寸和光标。

还定义了当用户将鼠标悬停在按钮上时改变背景颜色的悬停状态。最后使用React组件渲染按钮。

5. 结合D3用于数据可视化

D3是一个数据操作和可视化JavaScript库。您可以使用React实现强大的交互式数据可视化。下面这个示例说明了如何结合使用React和D3:

import React, {  useRef, useEffect } from 'react';import * as d3 from 'd3';function BarChart({  data }) {  const ref = useRef(); useEffect(() => {  const svg = d3.select(ref.current); const width = svg.attr('width'); const height = svg.attr('height'); const x = d3.scaleBand() .domain(data.map((d) => d.label)) .range([0, width]) .padding(0.5); const y = d3.scaleLinear() .domain([0, d3.max(data, (d) => d.value)]) .range([height, 0]); svg.selectAll('rect') .data(data) .enter() .append('rect') .attr('x', (d) => x(d.label)) .attr('y', (d) => y(d.value)) .attr('width', x.bandwidth()) .attr('height', (d) => height - y(d.value)) .attr('fill', '#007bff'); }, [data]); return ( <svg ref={ ref} width={ 400} height={ 400}> { /* axes go here */} </svg> );}export default BarChart;

这段代码定义了BarChart组件,该组件接受前面代码片段中的数据道具。它调用useRef钩子来引用SVG组件,该组件将使用它来绘制轮廓。

之后,它渲染图表的条形,并使用useEffect()钩子定义刻度,该钩子将数据的值映射到屏幕坐标。

6. 结合WebSockets以添加实时功能

实现WebSockets建立了一个完全可操作的双向通道,使客户端和服务器之间能够持续联系。它们使React能够为Web应用程序持续添加实用的组件,比如讨论板、实时更新和警告。

可以通过如下方式结合使用React和WebSockets:

import React, {  useState, useEffect } from 'react';import io from 'socket.io-client';function ChatRoom() {  const [messages, setMessages] = useState([]); const [inputValue, setInputValue] = useState(''); const socket = io('http://localhost:3001'); useEffect(() => {  socket.on('message', (message) => {  setMessages([...messages, message]); }); }, [messages, socket]); const handleSubmit = (e) => {  e.preventDefault(); socket.emit('message', inputValue); setInputValue(''); }; return ( <div> <ul> { messages.map((message, i) => ( <li key={ i}>{ message}</li> ))} </ul> <form onSubmit={ handleSubmit}> <input type="text" value={ inputValue} onChange={ (e) => setInputValue(e.target.value)} /> <button type="submit">Send</button> </form> </div> );}export default ChatRoom;

在该示例中,您定义了使用socket.io-client库的ChatRoom组件,以连接到WebSocket服务器。您可以使用useState钩子来处理消息概要。

一收到新消息,useEffect钩子注册侦听器,以触发对消息列表进行消息事件更新的操作。若要清除和发送事件消息的输入值,用户可以使用handlessubmit函数。

随后,带有输入字段和按钮的表单以及更新后的消息列表都将显示在屏幕上。

至于每个表单提交,调用handlessubmit函数是不可避免的。为了将消息传递到服务器,该方法使用套接字。

7. 结合React Native用于移动开发

React Local是一个使用React构建本地通用应用程序的系统,可用于推广面向iOS和Android平台的可移植应用程序。

结合使用React Native和React,您可以在移动和Web平台上使用React的基于组件的设计和可重用代码。这缩短了手机应用程序的开发周期和上市时间。React Native是一种流行的框架,用于开发可充分利用React库的原生移动应用程序。

引入重要的编程框架和库对分开处理iOS和安卓的设计师而言至关重要,比如Node.js、Response Local CLI、Xcode或Android Studio等编程框架和库。最后,简单的React Native组件使开发人员能够为iOS和安卓平台创建稳健可靠且功能丰富的移动应用程序。

将React与其他技术结合起来

React是一种大受欢迎的高效库,用于构建在线应用程序。React是创建用户界面的上佳选择,但它也可以与其他技术结合起来以增强功能。

通过结合React与上述技术,开发人员就能构建更精巧、更先进的应用程序,从而提供更出色的用户体验。React及其众多工具和库组成的生态系统可以满足为构建基础网站或复杂的Web应用程序各方面的需要。

原文标题:Beyond React: 7 Ways of Integrating React With Other Technologies,作者:Robert Pearce

责任编辑:华轩 来源: 51CTO React工具JavaScript

(责任编辑:探索)

    推荐文章
    • 我国货物贸易进出口破30万亿元 比去年同期增长22.2%

      我国货物贸易进出口破30万亿元 比去年同期增长22.2%进入四季度,我国外贸进出口稳的势头仍在继续巩固。海关总署11月7日发布的进出口数据显示,今年前10个月,我国货物贸易进出口总值突破30万亿元,与去年同期的25.95万亿元相比,增长22.2%。我国出口 ...[详细]
    • 支付宝商家群升级:群功能免费免研发 联动10大公私域场景

      支付宝商家群升级:群功能免费免研发 联动10大公私域场景支付宝开放平台公众号宣布产品再度升级:商家群核心运营工具均免研发免费开放,还新增支付宝10大公私域入口与流量激励政策,进一步为商家私域运营降本增效。支付宝继合作伙伴大会宣布免费开放商家群后,10月12 ...[详细]
    • 3200流明短焦投影 ASK S1320

      3200流明短焦投影 ASK S13203200流明短焦投影 ASK S1320作者:Molly 2011-05-12 09:54:35商务办公 ASK S1320短焦投影机具备良好的成像均匀度以及清晰度,采用3LCD显示技术,采用0.63 ...[详细]
    • oppo手机分屏怎么实现

      oppo手机分屏怎么实现opp手机的机型中可以使用的功能有很多,很多的用户在使用的时候比较好奇的是oppo手机分屏怎么实现呢?现在就和小编一起来看一下oppo手机实现分屏的方法吧。1、在手机桌面中打开一个应用后【三指上划】; ...[详细]
    • 中国五矿实现首季“开门红” 运行效率整体显著改善

      中国五矿实现首季“开门红” 运行效率整体显著改善4月22日,从中国五矿获悉,一季度,中国五矿营收同比增长11.9%,创历史同期最高;利润、净利润双双大幅超出预期,运行效率整体显著改善。一季度,中国五矿金属矿业利润总额同比增长23%,冶金建设营收同比 ...[详细]
    • 刘作虎:OPPO Find N3要让“一折遮三丑”成为过去式 -

      刘作虎:OPPO Find N3要让“一折遮三丑”成为过去式 -【手机中国新闻】10月12日,OPPO正式官宣全新折叠屏手机Find N3,定档10月19日全球发布!OPPO首席产品官、一加创始人刘作虎表示,这次OPPO Find N3要让折叠屏一折遮三丑的时代成 ...[详细]
    • 国内厂商押宝Android模仿秀:或成照虎画猫

      国内厂商押宝Android模仿秀:或成照虎画猫国内厂商押宝Android模仿秀:或成照虎画猫作者:张绪旺 2011-08-18 10:18:58移动开发 苹果风靡让国内外厂商垂涎不已,而“开源”谷歌Android的崛起更让部分企业看到不菲的财路。 ...[详细]
    • 视频号橱窗

      视频号橱窗为了进一步提升视频号教育培训类直播的内容质量,持续优化视频号橱窗用户体验,营造更好的视频号泛知识课程生态环境,腾讯将于06月23日起实施教育培训类直播的准入管理规则,特此公告。一、【适用范围】本规范适 ...[详细]
    • 养殖贷款怎么申请?在网上查询的征信有什么区别?

      养殖贷款怎么申请?在网上查询的征信有什么区别?养殖贷款怎么申请?向提供养殖贷款的银行提交《养殖业贷款申请书》、本人的身份证件及相关资料即可申请。申请以后到获得贷款将经历以下流程:1、调查贷款银行将对借款人提交的资料及还款能力进行调查,并实地调查抵 ...[详细]
    • 秋糖正式开展,机构逢低布局食品饮料了?

      秋糖正式开展,机构逢低布局食品饮料了?一年一度的秋季糖酒会在深圳正式开展了,作为食品行业最大的秋季盛会,数以千计的品牌商都会到现场交流行业信息,每年都能有最新鲜的的行业动态以及新机遇被发掘。因此历年来,糖酒会都被视为食品饮料行业的催化剂。 ...[详细]
    热点阅读