- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 jQuery 和 ReactJS 来完成一些事情。我注意到,当我在 React 中执行此操作与直接在浏览器控制台中执行操作时, $(selector)
的输出是不同的。
由于这个原因,我直接在浏览器控制台中执行的某些 JavaScript 代码可以工作,但当我在 React 中编写它时它就不起作用。
例如我有这个表:
render(){
console.log(this.state.data);
return (
<Table striped bordered condensed hover id="files-table">
<thead>
<tr>
<th>stuff</th>
</tr>
</thead>
<tbody>
<tr>
<td>stuff</td>
</tr>
</tbody>
</Table>
);
}
一方面,当我在 React 中执行 console.log($('#files-table'))
时,比如说在 componentDidUpdate()
Hook 中,我在控制台中查看此输出:
...另一方面,直接在浏览器控制台中键入的相同控制台语句显示此输出(这是我期望的输出):
有人可以解释一下这些差异吗?
我在实现 jQuery DataTables 时遇到问题,因为将 $('#files-table').DataTable()
放入 React componentDidUpdate()
Hook 会给出一个错误: $(...).DataTable 不是函数 虽然它可以在浏览器中工作(我知道这个错误可能是由于加载 jQuery 两次等引起的,但我不认为这是案例在这里)。
最佳答案
这种差异是由于 ReactJS 使用虚拟 DOM 而导致的,当您在浏览器控制台中执行 jQuery 选择器时 - 您正在访问实际的(真正的)DOM。
ReactJS 不是直接接触真实的 DOM,而是构建它的抽象版本(副本)。 ReactJS 使用这种方法解决的主要问题是 DOM 从未针对创建动态 UI 进行优化,并且写入浏览器的 DOM 相对较慢。
将虚拟 DOM 视为实际 DOM 的轻量级副本。与实际 DOM 一样,虚拟 DOM 是一个节点树,它将元素及其属性和内容列为对象和属性。 React 的 render() 方法从 React 组件创建一个节点树,并更新该树以响应由操作引起的数据模型中的变化。
One would think that re-rendering the entire Virtual DOM every time there’s a possibility that something has changed would be wasteful — not to mention the fact that at any one time, React is keeping two Virtual DOM trees in memory. But, the truth is that rendering the Virtual DOM will always be faster than rendering a UI in the actual browser DOM. It doesn’t matter what browser you’re using: this is just a fact.
React does this magic by attaching attributes to elements in your document and manipulating them individually (using these very specific ID attributes) after doing the diff to determine what needs updating. The Virtual DOM inserts additional steps into the process, but it creates an elegant way to do minimal updates to the browser window without you having to worry about the actual methods being used or even what needs to be updated and when.
有关虚拟 DOM 和实际 DOM 之间差异的更多信息,您可以找到 explained in this article并在 ReactJS docs也是如此。
在你的例子中 - jQuery DataTabes 库修改了 DOM。所以,你需要让 React 远离它。当 React 完全控制 DOM 时,它的效果最好。但在你的情况下 - 你需要将控制传递给 jQuery。
您需要创建一个组件来管理 jQuery DataTabes。该组件将提供 jQuery 组件的以 React 为中心的 View 。此外,它将:
看看 my answer here 。它包含如何在 ReactJS 中集成 jQuery 库的完整细节和详细说明。您可以使用相同的方法。
关于javascript - 与浏览器控制台相比,为什么相同的 jQuery 选择器在 React Component hooks 中具有不同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38603216/
问题是,当用户回复彼此的帖子时,我必须这样做: margin-left:40px; 对于 1 级深度 react margin-left:80px; 对于 2 层深等 但是我想让 react div
我试图弄清楚如何将 React Router 与 React VR 连接起来。 首先,我应该使用 react-router dom/native ?目前尚不清楚,因为 React VR 构建在 Rea
我是 React 或一般编码背景的新手。我不确定这些陈述之间有什么区别 import * as react from 'react' 和 import react from 'react' 提前致谢!
我正在使用最新的稳定版本的 react、react-native、react-test-renderer、react-dom。 然而,react-native 依赖于 react@16.0.0-alp
是否 react 原生 应用程序开发可以通过软件架构实现,例如 MVC、MVP、MVVM ? 谢谢你。 最佳答案 是的。 React Native 只是你提到的那些软件设计模式中的“V”。如果你考虑其
您好我正在尝试在我的导航器右按钮中绑定(bind)一个功能, 但它给出了错误。 这是我的代码: import React, { Component } from 'react'; import Ico
我使用react native创建了一个应用程序,我正在尝试生成apk。在http://facebook.github.io/react-native/docs/signed-apk-android.
1 [我尝试将分页的 z-index 更改为 0,但没有成功] 这是我的codesandbox的链接:请检查最后一个选择下拉列表,它位于分页后面。 https://codesandbox.io/s/j
我注意到 React 可以这样导入: import * as React from 'react'; ...或者像这样: import React from 'react'; 第一个导入 react
我是 react-native 的新手。我正在使用 React Native Paper 为所有屏幕提供主题。我也在使用 react 导航堆栈导航器和抽屉导航器。首先,对于导航,论文主题在导航组件中不
我有一个使用 Ignite CLI 创建的 React Native 应用程序.我正在尝试将 TabNavigator 与 React Navigation 结合使用,但我似乎无法弄清楚如何将数据从一
我正在尝试在我的 React 应用程序中进行快照测试。我已经在使用 react-testing-library 进行一般的单元测试。然而,对于快照测试,我在网上看到了不同的方法,要么使用 react-
我正在使用 react-native 构建跨平台 native 应用程序,并使用 react-navigation 在屏幕之间导航和使用 redux 管理导航状态。当我嵌套导航器时会出现问题。 例如,
由于分页和 React Native Navigation,我面临着一种复杂的问题。 单击具有类别列表的抽屉,它们都将转到屏幕 问题陈述: 当我随机点击类别时,一切正常。但是,在分页过程中遇到问题。假
这是我的抽屉导航: const DashboardStack = StackNavigator({ Dashboard: { screen: Dashboard
尝试构建 react-native android 应用程序但出现以下错误 info Running jetifier to migrate libraries to AndroidX. You ca
我目前正在一个应用程序中实现 React Router v.4,我也在其中使用 Webpack 进行捆绑。在我的 webpack 配置中,我将 React、ReactDOM 和 React-route
我正在使用 React.children 渲染一些带有 react router 的子路由(对于某个主路由下的所有子路由。 这对我来说一直很好,但是我之前正在解构传递给 children 的 Prop
当我运行 React 应用程序时,它显示 export 'React'(导入为 'React')在 'react' 中找不到。所有页面错误 see image here . 最佳答案 根据图像中的错误
当我使用这个例子在我的应用程序上实现 Image-slider 时,我遇到了这个错误。 import React,{Component} from 'react' import {View,T
我是一名优秀的程序员,十分优秀!