问题标签 [virtual-dom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1845 浏览

javascript - 在初始化 ReactJS 应用程序之前是否需要等待窗口加载事件?

在初始化反应应用程序之前是否有任何理由等待窗口加载事件?

只要rootElement是在html中定义的,不是被javascript隐藏或动态创建的,是否有可能无法及时被React初始化?

编辑:这也假设在页脚中加载了 javascript。

0 投票
1 回答
1718 浏览

javascript - DOM 和 Virtual DOM 在内存中是如何表示的?

有什么区别,为什么访问 Virtual DOM 比访问 DOM 更快?

0 投票
2 回答
307 浏览

reactjs - virtual-dom 和 shouldComponentUpdate

如果我是对的Virtual DOM,ReactJS 中的将前一个DOM与当前 DOM 进行比较,即,在状态树更改后形成。那么为什么当父道具发生变化时子组件会重新渲染。

如果虚拟 DOM 只渲染尚未渲染的 DOM,我为什么要使用shouldComponentUpdate()方法。

我看过很多关于这方面的视频,但我没有得到他们的确切行为方式。如果有人能清楚地解释以下疑问,那将是非常高兴的。

1) virtual DOM 是否每次都只渲染尚未渲染的组件,还是会有任何异常?

2)如果virtual DOM每次只渲染没有渲染的组件,为什么子组件会在父props发生变化时重新渲染?

3)我应该什么时候使用shouldComponentUpdate()

0 投票
0 回答
60 浏览

javascript - 尝试实现我自己的类似 React 的框架,组件系统

大多数时候,我使用 Vue.js 或 React 来构建我的前端 Web 应用程序,主要是因为我喜欢它们的组件系统的工作方式。所以现在我正在尝试构建我自己的 JavaScript 框架,比如 React,这就是我到目前为止所做的:

我在我的 javascript 中使用 Babel,它都与 webpack 捆绑在一起。我使用babel-plugin-transform-jsx来转换这个 jsx 类型的表达式:

进入这个 javascript 对象:

我知道如何用这个对象构建一个真实的 DOM,但是可以说我想在 JSX 中包含另一个组件,如下所示:

在 OtherComponent 类内部,我将有一个渲染函数,该函数将插入其父级,就像 React 一样。我怎样才能做到这一点?

0 投票
0 回答
101 浏览

reactjs - 是否将 shouldComponentUpdate() 显式设置为 false 会使组件“不受控制”?

一个“不受控制的组件”在 DOM 中保留了“真相的来源”。所以这把它放在了虚拟 DOM 世界之外。对于这些组件,React 只会进行一次初始渲染然后忽略它。

如果一个类也shouldComponentUpdate()设置为falseReact,则只会进行初始渲染然后忽略它。

那么,如果一个shouldComponentUpdate() 明确设置为的类false在技术上使其成为不受控制的组件

0 投票
1 回答
60 浏览

javascript - 我是否理解正确反应虚拟 DOM 感觉?

我的想法:

如果我们想在 dom 元素上做一些事情,我们可以这样做:

在这种情况下,浏览器需要在整个 DOM 中搜索#someId 对象。然后它会忘记元素并再次搜索以执行 DoSomethingElse()。
为了解决“忘记并再次搜索”问题,我们可以将元素保存为JavaScript 对象

更进一步,我们可以保存整个元素组或整个节点以实现更好的性能。再上一步,我们将整个 DOM 保存为一个名为virtual dom的 JavaScript 对象。

这是理解虚拟 DOM 目的的正确方法吗?

对不起菜鸟问题,我不是前端开发人员,我只是好奇:)

0 投票
2 回答
137 浏览

javascript - React Virtual DOM 如何与第三方 js 插件配合使用?

React Virtual DOM 如何与第三方 js 插件配合使用?例如,如果我们使用将直接与真实 dom 通信的传单或 jquery 库,那么反应虚拟 dom 如何处理这些真实 dom 操作。

0 投票
1 回答
369 浏览

elm - 强制重绘 img 元素

我的 Elm 应用程序允许用户旋转图片:当点击屏幕上的图片时,elm 会调用 API 来旋转服务器上的图片文件。之后,我希望旋转后的图像显示在浏览器中。

但是虚拟 DOM 根本没有改变,因为 img 节点具有相同的 src URL。有没有办法可以强制重新创建 img ?

当然,我可以使用 Keyed 节点或修改我的 img 上的某些属性来强制重绘,但这意味着向我的模型添加一些在旋转时修改的内容。这是可能的,但不是很优雅。

0 投票
2 回答
2840 浏览

angular - Angular 5.0 变更检测策略 VS React 的变更检测策略

我了解更改检测Angular 5.0中的工作原理。

有人可以帮助我了解React中的相同工作原理以及它与Angular 的不同之处吗?

0 投票
0 回答
23 浏览

javascript - 如何使用 Javascript(VM/解释器/虚拟 DOM?)过滤 JavaScript API/DOM 请求

我需要拦截并可能重写/代理各种 api 请求,例如 window.PostMessage、window.location.href、XHR 等。有几种解决方案,例如xhook,但这些似乎只适用于一小部分 API,并且只适用于特定的浏览器。所以我想知道,这样做的正确方法是什么?是否可以加载解释器,将整个 DOM 加载到其中,并以某种方式通过解释器或某种带有 webAPIs shim 的 DOM 获取钩子并获取钩子?我知道这样的解决方案会有点慢,但我真的不需要高性能,因为这应该是维护一些遗留代码的短期解决方案。