Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >反应中等效的jQuery .load()

反应中等效的jQuery .load()
EN

Stack Overflow用户
提问于 2022-10-09 12:21:58
回答 1查看 51关注 0票数 1

我正在学习React,并尝试迁移一个PHP + jQuery页面来做出反应(没有jQuery)。但是,由于页面的复杂性,我不能同时完全迁移所有的页面。因此,我需要开始迁移一些已经作为内容加载旧页面的React页面。

我想要我的导航页脚..。在仍然使用旧页面的内容的同时,已经做出了反应。我认为像jQuery $(".content").load(url + ' .content')这样的东西是我正在寻找的东西,但是没有使用jQuery。

在“反应”中,我建立了这样的东西:

代码语言:javascript
运行
AI代码解释
复制
import  React, { useState, useEffect } from "react";

export default function ContentLoader(params){
    const [content, setContent] = React.useState("");

    function load(url) {
        fetch(url).then(res => {
            let html = res.text();
            setContent(html.querySelector(".content")); 
        });
    }
    
    useEffect(() => {
        load(params.url);
    });

    return(
        <div className="content">
            {content}
        </div>
    )
}

但是,我得到了一个错误Unhandled Rejection (TypeError): html.querySelector is not a function. (In 'html.querySelector(".content")', 'html.querySelector' is undefined)

仅对于上下文,元素被集成到另一个元素中,如下所示:

代码语言:javascript
运行
AI代码解释
复制
 <Route
    path='/stackoverflow'
    element={
        <ContentLoader url='http://myurl.com/stackoverflow' />
    }
 />

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-09 16:20:51

您的主要问题是,res.text()使用的是普通字符串,而不是HTML文档。

在将HTML片段插入到JSX中时也会遇到问题。

第一个问题可以通过使用DOMParser (或具有内置解析器的XMLHttpRequest )来解决。

对于第二个,您可以使用一个状态变量来保存.content元素的.content,并通过dangerouslySetInnerHTML插入它。

代码语言:javascript
运行
AI代码解释
复制
import { useEffect, useState } from "react";

const parser = new DOMParser();

const load = async (url, selector) => {
  const res = await fetch(url);
  if (!res.ok) {
    throw new Error(`${url}: ${res.status} ${res.statusText}`);
  }
  const html = await res.text();
  const doc = parser.parseFromString(html, "text/html");
  return doc.querySelector(selector);
};

export default function ContentLoader({ url }) {
  const [content, setContent] = useState();

  useEffect(() => {
    load(url, ".content")
      .then((el) => {
        setContent({ __html: el?.outerHTML });
      })
      .catch(console.error);
  }, [url]);

  return <div className="content" dangerouslySetInnerHTML={content} />;
}

您还可以使用一个ref元素并追加已解析的文档片段。

代码语言:javascript
运行
AI代码解释
复制
const contentRef = useRef(null);

useEffect(() => {
  load(url, ".content")
    .then((content) => {
      // empty out any previous content
      contentRef.current.innerHTML = "";

      contentRef.current.append(content);
    })
    .catch(console.error);
}, [url]);

return <div className="content" ref={contentRef}></div>;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74008108

复制
相关文章
jquery中load的用法
调用load方法的完整格式是:load( url, [data], [callback] ),其中
OECOM
2020/07/01
1.1K0
jquery中load中文乱码的解决方法
本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可
IT小马哥
2022/11/16
5430
jQuery - AJAX load() 方法
下面的例子会把文件 "demo_test.txt" 的内容加载到指定的 <div> 元素中:
陈不成i
2021/07/22
1.5K0
延迟加载图片的jQuery插件-Lazy Load Plugin for JQuery
Lazy Load是一个用Javascript写得jQuery插件。它可以使一个长网页中,不在当前视图中的图片延迟加载,以提高页面的载入速度。
EltonZheng
2021/01/26
4K0
【冷知识】jQuery 中load()方法页面显示空白bug
项目中,使用jquery中的load方法加载页面,一直不能实现。页面显示空白,也不提示错误。 代码如下:
用户9914333
2022/07/22
1.1K0
延迟加载图片的 jQuery 插件:Lazy Load
网站的速度非常重要,现在有很多网站优化的工具,如 Google 的 Page Speed,Yahoo 的 YSlow,对于网页图片,Yahoo 还提供 Smush.it 这个工具对图片进行批量压缩,但是对于图片非常多的网站,载入网页还是需要比较长的时间,这个时候我们可以使用 Lazy Load 这个 jQuery 插件来延迟加载图片。
Denis
2023/04/15
2K0
jQuery - AJAX 简介及AJAX load() 方法
简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示。
用户7718188
2021/10/07
1K0
linux load average,理解Linux中的Load Average
(以上三个命令各有区别,top是以固定间隔显示进程的资源占用排名,w显示who and what they are doing,uptime就顾名思义)
全栈程序员站长
2022/09/09
1.5K0
等效直径
算法:等效直径是与轮廓面积相等的圆形的直径,作为轮廓的特征,也作为图像的特征,通常情况下,轮廓是非规则外形的图像。
裴来凡
2022/05/28
8730
等效直径
jQuery AJAX load()方法中代码执行顺序的问题
问题来源于菜鸟教程介绍 jQuery load() 方法时用的一个实例: JS:
Chor
2019/11/08
1.6K0
Mysql中的join、cross join、inner join是等效的
At the parser stage, queries with right outer join operations are converted to equivalent queries containing only left join operations. In the general case, the conversion is performed such that this right join:
saintyyu
2021/11/22
1.8K0
layui布局 使用jquery的load后页面js失效
布局页面 H5在主体部分用jquery的load方法引入其他页面本页面js失效 <!DOCTYPE html> <html> <head> <meta charset="utf-8">
用户5899361
2020/12/07
2.7K0
layui布局 使用jquery的load后页面js失效
布局页面 H5在主体部分用jquery的load方法引入其他页面本页面js失效 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>layout 后台大布局 - Layui</title> <link rel="stylesheet" hr
用户5899361
2020/12/02
4.3K0
layui布局 使用jquery的load后页面js失效
电阻电路的等效变化(Ⅰ)
欧姆定律:在同一电路中,通过某一导体的电流跟这段导体两端的电压成正比,跟这段导体的电阻成反比,这就是欧姆定律。公式为I=U/R 基尔霍夫定律:在前面的电路当中有介绍过的,概述:集总参数电路:集总参数思想是电路理论的最基本也是最核心的思想 。集总参数电路是由电路电气器件的尺寸和工作信号的波长来做标准划分的,要知道集总参数电路首先要了解实际电路的基本定义。实际电路有可分为分布参数电路和集总参数电路。基尔霍夫电流定律(KCL)  基尔霍夫电压定律(KVL) 等效变化:本篇内容的重点也是在学习电路当中必须要掌握的知识点,对电路在进行分析和计算的时候有的时候可以把某一部分的电路是可以进行化简的。那么此时就可以用较为难的一个电路化简成一个比较简单的电路。 这③个概念对于前期来说学电路是特别的重要的(✿◕‿◕✿)
謓泽
2022/12/12
5610
电阻电路的等效变化(Ⅰ)
电阻电路的等效变化(Ⅱ)
🚩write in front🚩    🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家 & 阿里云星级博主~掘金⇿InfoQ创作者~周榜99»总榜1184🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠  📝个人主页-謓泽的博客_CSDN博客📃 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏-【电路】原理_謓泽的博客-CSDN博客🎓 ✉️我们并非登
謓泽
2022/12/12
6230
电阻电路的等效变化(Ⅱ)
理解Linux中Load
负载均值在 uptime 或者 top 命令中可以看到,它们可能会显示成这个样子:load average: 0.09, 0.05, 0.01 很多人会这样理解负载均值:三个数分别代表不同时间段的系统平均负载(一分钟、五 分钟、以及十五分钟),它们的数字当然是越小越好。数字越高,说明服务器的负载越 大,这也可能是服务器出现某种问题的信号。 而事实不完全如此,是什么因素构成了负载均值的大小,以及如何区分它们目前的状况是 “好”还是“糟糕”?什么时候应该注意哪些不正常的数值?回答这些问题之前,首先需要了解下这些
企鹅号小编
2018/01/25
2K0
电阻电路等效变换(Ⅲ)
🚩write in front🚩   🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ创作者~周榜163﹣总榜1039⇿全网访问量30w+🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠ 📝个人主页⇢打打酱油desuCSDN博客💬 🎁欢迎各位⇢点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏⇢【电路】原理_謓泽的博客-CSDN博
謓泽
2022/12/12
6300
电阻电路等效变换(Ⅲ)
jQuery:详解jQuery中的事件(一)
之前用过一些jQuery的动画和特效,但是用到的部分也不超过10%的样子,感觉好浪费啊——当然浪费的不是jQuery,而是Web资源。后来就想深入研究下jQuery的内部机理,读过两遍jQuery源代码,但是自觉还差的好远,跟好多大神(比如阮一峰)的理解还是有很大差距。现在就一点一点积累自己的知识体系,记录自己学到的和自己所理解的jQuery。
王金龙
2019/02/25
1.8K0
ObjectARX中反应器的使用
ObjectARX中反应器的使用 反应器机制是观察者模式(设计模式)的一种实现,在该机制下,有事件通知者和事件接收者,负责接收事件的称为反应器 反应器列表:在反应器可以从通知者处接收消息之前,必须显式地将反应器添加到通知者的反应器列表中。 反应器部分类继承关系 种类:
用户3519280
2023/07/24
4380
jQuery:详解jQuery中的事件(二)
  上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件、事件冒泡和事件移除等内容。
王金龙
2019/02/25
2.3K0

相似问题

jQuery .load()等效AngularJS

44

GWT中的jquery load()等效项

21

是否存在与jquery .load()等效的原生javascript?

39

单击b后,jQuery .load反应缓慢

10

jQuery代码.load,.scroll,.ready等效香草Javascript代码

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档