- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这可能是一个经典问题,但我真的无法从任何人那里得到真正的答案,我寻求一个详细的示例或情况来证明 React 解决了一个真正的问题。我理解可重用性、声明式风格的部分,但仍然迷失在 React 网站总是讲述 React “我们构建 React 来解决一个问题:用数据构建大型应用程序”随着时间的推移而改变。”
React Podcast4 上的讨论提到 React 的创建者 Jordan Walke 正在解决 Facebook 的一个问题:拥有多个数据源更新自动完成字段。数据是异步从后面传来的结尾。确定在哪里插入新内容变得越来越复杂行以重用 DOM 元素。沃克决定生成现场代表每次都重新定义(DOM 元素)。该解决方案因其简单性而优雅:UI 为功能。用数据调用它们,您就会得到可预测的渲染 View 。
这很好,但仍然无法完全消化它,在其创建者心中创建 React 的真正问题是什么,
这到底是什么意思?
"It was becoming more and more complicated to determine where toinsert new rows in order to reuse DOM elements"
我无法完全理解这种情况,任何人都可以用或不用代码向我详细解释这种情况,从多个源异步获取数据并将其附加到 DOM 中的某个元素有什么问题? ?
最佳答案
I couldn't fully understand that situation, can anyone explain in details this situation to me with or without code, what is the problem to get that data asynchronously from multiple sources and just append it to a certain element in the DOM??
假设我们有一个购物车:
<span class="total">1</span>
<ul class="products">
<li class="product">
Product 1
<span class="quantity">2</span>
<span class="price">10 EUR</span>
</li>
</ul>
当我们将东西添加到购物车时,请求会发送到服务器。服务器执行一些验证和业务逻辑,然后将新购物车发送回客户端。
const addToCart = async (product) => {
try (
// send data and waits for a response
// returns a array with objects
// eg: [{}, {}, ...]
) catch (
...
)
}
// on some event:
cart = addToCart({ product: 1, quantity: 5 })
在普通 JavaScript 中,我们现在需要更新大量 DOM 元素。
它可能看起来像:
const productsElm = document.querySelector(".products");
productsElm.innerHTML = '';
cart.forEach( (product) => {
const product = document.createElement('li')
const quanity = document.createElement('span')
const price = document.createElement('span')
product.innerHtml = product.name
product.append(quanity)
product.append(price)
productsElm.append(pro)
}
document.querySelector(".quantity").innerHtml = cart.length
在此示例中,我们清空购物车并使用从服务器收到的数据重建它
这已经很难扩展和维护。
现在假设我们从一个不断将更改从服务器发送到客户端的网络套接字获取响应,也许我们有几个带有链接购物车的网上商店。
首先是A店的产品,3秒后是B店的产品
我们现在运行中遇到的几个问题,例如:
所以现在我们需要编写复杂的代码来更新购物车。
REACT 生态系统通过引入 Reactivity 解决了这个问题。到 JavaScript,因此我们作为开发人员不再需要担心更新 DOM 元素。
关于javascript - React真正解决的问题是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72977431/
缓冲区溢出问题是众所周知的。因此,我们有幸使用标准库函数,例如 wcscat_s()。 Microsoft 的好心人已经创建了类似的安全字符串函数,例如 StringCbCat()。 但是我遇到了一个
HTTP缓存相关的问题好像是前端面试中比较常见的问题了,上来就会问什么cache-control字段有哪些,有啥区别啥的。嗯……说实话,我觉得至少在本篇来说,HTTP缓存还算不上复杂,只是字段稍
代理,其实全称应该叫做代理服务器,它是客户端与服务器之间得中间层,本质上来说代理就是一个服务器,在HTTP的链路中插入的一个中间环节,就是代理服务器啦。所谓的代理服务就是指:服务本身不生产内容,
我们在前两篇的内容中分别学习了缓存和代理,大致了解了缓存有哪些头字段,代理是如何服务于服务器和客户端的,那么把两者结合起来,代理缓存,也就是说代理服务器也可以缓存,当客户端请求数据的时候,未必一
在前面的章节,我们把HTTP/1.1的大部分核心内容都过了一遍,并且给出了基于Node环境的一部分示例代码,想必大家对HTTP/1.1已经不再陌生,那么HTTP/1.1的学习基本上就结束了。这两
我们前一篇学习了HTTP/2,相比于HTTP/1,HTTP/2在性能上有了大幅的改进,但是HTTP/2因为底层还是基于TCP协议的,虽然HTTP/2在应用层引入了流的概念,利用多路复用解决了队头
前面我们花了很大的篇幅来讲HTTP在性能上的改进,从1.0到1.1,再到2.0、3.0,HTTP通过替换底层协议,解决了一直阻塞性能提升的队头阻塞问题,在性能上达到了极致。 那么,接下
上一篇噢,我们搞明白了什么是安全的通信,这个很重要,特别重要,敲黑板!! 然后,我们还学了HTTPS到底是什么,以及HTTPS真正的核心SSL/TLS是什么。最后我们还聊了聊TLS的实
经过前两章的学习,我们知道了通信安全的定义以及TLS对其的实现~有了这些知识作为基础,我们现在可以正式的开始研究HTTPS和TLS协议了。嗯……现在才真正开始。 我记得之前大概聊过,当
这一篇文章,我们核心要聊的事情就是HTTP的对头阻塞问题,因为HTTP的核心改进其实就是在解决HTTP的队头阻塞。所以,我们会讲的理论多一些,而实践其实很少,要学习的头字段也只有一个,我会在最开始
我们在之前的文章中介绍HTTP特性的时候聊过,HTTP是无状态的,每次聊起HTTP特性的时候,我都会回忆一下从前辉煌的日子,也就是互联网变革的初期,那时候其实HTTP不需要有状态,就是个浏览页面
前面几篇文章,我从纵向的空间到横向的时间,再到一个具体的小栗子,可以说是全方位,无死角的覆盖了HTTP的大部分基本框架,但是我聊的都太宽泛了,很多内容都是一笔带过,再加上一句后面再说就草草结束了。
我的问题确实很简单,是否应该对适配器(设计模式)类进行单元测试,以及如何进行测试? 例子: 我想用PHP创建一个ClientSocket类,它是fsockopen,fread,fwrite的适配器。
目前,我在 PHP 脚本中使用此查询: SELECT * FROM `ebooks` WHERE `id`!=$ebook[id] ORDER BY RAND() LIMIT 125; 数据库最多大约
我们都知道可以使用 GetCustomAttributes 方法查询程序集的属性。我想用它来识别我的应用程序的扩展模块。但是,为了避免加载每个程序集,我更喜欢防御性方法: 使用 Assembly.Re
我正在移植一个非常大的代码库,我在处理旧代码时遇到了更多困难。 例如,这会导致编译器错误: inline CP_M_ReferenceCounted * FrAssignRef(CP_M_Refere
[关于此主题还有其他类似的问题,但是它们都没有回答我在这里提出的问题,即AFAICT。 (即,我已经阅读了所有答案,解释了为什么特定构造无法与发问者尝试进行的操作,在某些情况下,它们提供了获得所需结果
嗨 我想为需要全屏运行的网络艺术应用程序构建一个控制面板,因此所有控制颜色和速度值等内容的面板都必须位于不同的窗口中。 我的想法是建立一个数据库来存储所有这些值,当我在控制面板窗口中进行更改时,应用程
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
假设我想实现一个分布式数据库(每个节点都是其他节点的副本);我听说 cdb 能够轻松地在两个节点之间进行同步,并且至少支持某种形式的冲突解决。 不幸的是我不知道 couchdb 因此我不得不问:节点“
我是一名优秀的程序员,十分优秀!