Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >提供反应性数据的源

提供反应性数据的源
EN

Stack Overflow用户
提问于 2020-04-12 10:43:57
回答 1查看 90关注 0票数 1

上下文:,我目前的Meteor项目是一个教学应用程序,老师可以远程观察学习者在做什么。有很多不同的观点,学习者可以使用,所以我需要区分数据共享方面和观点本身。同样的视图将显示在教师的设备上,显示由学生的行为控制。

问题:*是我使用声音的技术吗?*当组件的输入没有改变时,如何防止它被重新呈现?

详细信息:我已经创建了一个基本的原型(见下文)。它使用Source实例(应用程序本身将通过MongoDB集更新该实例)为视图组件提供反应性数据。在我的原型中,我只生成随机数据。

我有过两个惊喜。

一个:我发现,如果我在源中的一个.get()上调用ReactiveVar,这就足以触发Tracker对象读取新值,即使我返回一个完全非反应性变量的值。可以预期,如果ReactiveVar的值没有变化,跟踪器将忽略对非反应性变量的任何更改。

二:跟踪器获得的值被转发给组件sprops`‘,即使该值不变,也会导致重呈现。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React, { Component } from 'react'
import { ReactiveVar } from 'meteor/reactive-var'
import { withTracker } from 'meteor/react-meteor-data'


/// SOURCE ——————————————————————————————————————————————————————————

class Source {
  constructor() {
    this.updateData = this.updateData.bind(this)
    this.updateData()
  }

  updateData() {
    const reactive = Math.floor(Math.random() * 1.25) // 4 times as many 0s as 1s
    data.set(reactive)
    console.log("reactive:", reactive)

    this.usable = ["a", "b", "c"][Math.floor(Math.random() * 3)]
    console.log("usable:  ", this.usable)

    setTimeout(this.updateData, 1000)
  }

  get() {       
    data.get() // We MUST get a reactive value to trigger Tracker...
    return this.usable // ... but we CAN return a non-reactive value
  }
}


let data = new ReactiveVar(0)
const source = new Source()


/// COMPONENT ———————————————————————————————————————————————————————

class Test extends Component{

  render() {
    console.log("rendered:", this.props.data)

    return (
      <div>
        {this.props.data}
      </div>
    )
  }
}

export default withTracker(() => {
  const data = source.get()
  console.log("UPDATE:  ", data)
  console.log("")

  const props = {
    data
  }

  return props
})(Test)

示例控制台输出,附带注释:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
reactive: 1
usable:   b
UPDATE:   b

rendered: b <<< initial value rendered
reactive: 1 <<< no change to reactive value...
usable:   a <<< ...so usable value is ignored
reactive: 0 <<< reactive value changes...
usable:   c <<< ... so an update is sent to the component
UPDATE:   c

rendered: c <<< c rendered
reactive: 0 <<< no change to the reactive value...
usable:   c
reactive: 0
usable:   b
reactive: 0
usable:   c
reactive: 0
usable:   b
reactive: 1 <<< but when reactive value changes
usable:   c <<< the usable value does not
UPDATE:   c

rendered: c <<< c re-rendered, although unchanged

To recap:,我的计划是在每次来自学生的新数据到达时,在instance实例中增加一个ReactiveVar。但是,如果学生只是移动光标,那么我只希望显示学生光标的组件重新呈现,而不是整个视图。

我很感激任何关于我如何能做到这一点的见解。

EN

回答 1

Stack Overflow用户

发布于 2020-04-12 15:03:21

你所看到的行为是流星“魔法”的一部分--它看到你的反应变量依赖于一个简单的变量,并且使它也是反应性的,或者更准确地说,它设置了一个手表。

withTracker通常会触发多个呈现,因此优化这些呈现的最佳方法是使用React.memo()

我个人不喜欢React.memo,它让我觉得很笨拙,并且让开发人员做一些不必要的工作。这里有一篇很好的文章对此作了解释:

https://dmitripavlutin.com/use-react-memo-wisely/

当组件被包装在React.memo()中时,React呈现组件并回传结果。在下一次呈现之前,如果新的道具是相同的,请重新使用回忆录结果,跳过下一个呈现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61176435

复制
相关文章
Diels-Alder反应的区域选择性分析
本文以1-甲氧基-1,3-丁二烯与丙烯腈的反应为例,从量子化学角度分析D-A反应的区域选择性问题。反应式和反应物的结构如下:
用户7592569
2020/07/27
2.1K0
Diels-Alder反应的区域选择性分析
声明性数据基础设施为数据驱动企业提供动力
大数据、人工智能/ML和现代分析技术已经渗透到商业世界,成为企业战略的关键元素,以更好地服务客户、更快地创新和保持领先的竞争。数据是所有这些的核心。在本博客中,我们将重点讨论Kubernetes和相关的容器原生存储技术,如何使数据工程师(即DataOps团队)能够构建可伸缩的、敏捷的数据基础设施,从而实现这些目标。
CNCF
2019/12/04
6350
Nature | 突破优化合成反应瓶颈,机器学习提供新思路!
今天给大家介绍的是来自不列颠哥伦比亚大学Jason E. Hein教授发表在Nature官网News and Views上的文章。在本文中,作者介绍了Shields等人最近发表在Nature上关于加快各种合成反应的优化速度的可访问机器学习工具这一工作,并揭示了人为认知偏见如何影响优化。
DrugAI
2021/03/03
6740
Nature | 突破优化合成反应瓶颈,机器学习提供新思路!
Nature | 突破优化合成反应瓶颈,机器学习提供新思路!
今天给大家介绍的是来自不列颠哥伦比亚大学Jason E. Hein教授发表在Nature官网News and Views上的文章。在本文中,作者介绍了Shields等人最近发表在Nature上关于加快各种合成反应的优化速度的可访问机器学习工具这一工作,并揭示了人为认知偏见如何影响优化。
智能生信
2021/03/03
4930
Nature | 突破优化合成反应瓶颈,机器学习提供新思路!
单细胞meta分析揭示肿瘤反应性CXCL13+T细胞对免疫检查点阻断的反应
CD8+T细胞是识别,杀伤肿瘤的关键免疫细胞,与免疫治疗疗效息息相关。而肿瘤反应性CD8 T细胞(肿瘤反应性CD8+ T细胞)更是杀伤肿瘤的主要战士。但如何精确地区分肿瘤反应性CD8 T细胞与旁观CD8 T细胞(Bystander CD8+ T cells)仍是挑战。而肿瘤反应性CD8 T细胞中不同亚群对免疫治疗响应有怎样的差异更亟待探索。
生信技能树jimmy
2023/02/10
6810
单细胞meta分析揭示肿瘤反应性CXCL13+T细胞对免疫检查点阻断的反应
头皮脑电图源空间的计算建模为癫痫的术前评估提供依据
目的:颅内脑电图(iEEG)指导癫痫手术的有效性取决于iEEG电极的植入位置。该决定是通过非侵入性记录方式(例如头皮脑电图)得出的。因此作者提出了一个框架,以询问头皮脑电图和确定癫痫的侧化,以帮助电极植入。
脑机接口社区
2020/06/30
5370
[NMI 2022 | 论文简读] 基于广义模板的精确有机反应性预测图神经网络
A generalized-template-based graph neural network for accurate organic reactivity prediction
智能生信
2022/12/29
3040
[NMI 2022 | 论文简读] 基于广义模板的精确有机反应性预测图神经网络
Excel小技巧57: 数据有效性的妙用之提供备选项列表
在《Excel小技巧56:数据有效性的妙用之提示用户输入信息》中,我们打破常规,利用数据有效性功能来为用户提供提示信息。本文仍然不会利用数据有效性常用的限制用户输入的功能,而是给用户提供一些参考输入项,在方便输入的同时提供更多的灵活性。
fanjy
2020/09/25
8180
Excel小技巧57: 数据有效性的妙用之提供备选项列表
用于研究反应活性和选择性的Distortion/Interaction-Activation Strain模型
Activation strain model或者distortion/interaction model是一种能量分解的方式,最早由F. Matthias Bickelhaupt在1999年建立,称为activation strain model,随后在2007年Kendall N. Houk也提出了相同的方法,称为distortion/interaction model。在2017年,Bickelhaupt和Houk在Angew上合作发表了此种方法的综述。在这篇综述中,这种方法被命名为Distortion/Interaction-Activation Strain (DIAS) Model。使用DIAS模型可以定量地研究反应的活性和选择性。
用户7592569
2020/07/27
1.9K0
用于研究反应活性和选择性的Distortion/Interaction-Activation Strain模型
解决 springboot 多数据源或动态数据源 的事务问题
  动态数据源 或者 多数据源 在项目当中是经常遇到的,但由于spring 开启事务后,为保证整个事务的 connection 不会变化,spring 在通过 DataSourceUtils 获取 connection 的时候会用 DataSource 作为 key 将 connection 保存到 ThreadLocal 中(这段代码是没办法进行重写的,它是静态方法,并在其他地方直接调用),如下所示:
botkenni
2022/09/07
4.8K2
解决 springboot 多数据源或动态数据源 的事务问题
Geoserver的ImageMosaic数据源
ImageMosaic翻译成中文就是影像拼接,适用于多个影像文件需要在一起展示的场景,针对这种场景,我们可以对每一个影像数据发布服务,完了通过layergroup的方式统一成一个服务,很显然,如果当影像很多的时候这种操作既耗时又费力,这个时候你就需要用到geoserver的ImageMosaic,它可以实现将一个文件夹下面的所有影像文件发布成一个服务的需求。
牛老师讲GIS
2021/03/20
8480
kubeadm v1.15提供的自动高可用性
kubeadm是一个工具,使Kubernetes管理员能够快速、轻松地引导最小可行的集群,这些集群完全符合经过认证的Kubernetes指南。自2016年以来,它一直处于集群生命周期SIG的积极开发中,并在2018年底从beta版升级到通用版(GA)。
CNCF
2019/12/04
7790
kubeadm v1.15提供的自动高可用性
剖析大数据平台的数据源
我在一次社区活动中做过一次分享,演讲题目为《大数据平台架构技术选型与场景运用》。在演讲中,我主要分析了大数据平台架构的生态环境,并主要以数据源、数据采集、数据存储与数据处理四个方面展开分析与讲解,并结合具体的技术选型与需求场景,给出了我个人对大数据平台的理解。本文是演讲内容的第一部分。 大数据平台是一个整体的生态系统,内容涵盖非常丰富,涉及到大数据处理过程的诸多技术。在这些技术中,除了一些最基础的平台框架之外,针对不同的需求场景,也有不同的技术选择。这其中,显然有共性与差异性的特征。若从整个开发生命周期的角
张逸
2018/03/07
1.7K0
剖析大数据平台的数据源
Flink DataStream 内置数据源和外部数据源
在 StreamExecutionEnvironment 中,可以使用 readTextFile 方法直接读取文本文件,也可以使用 readFile 方法通过指定文件 InputFormat 来读取特定数据类型的文件,如 CsvInputFormat。
kk大数据
2019/10/10
2.8K0
Flink DataStream 内置数据源和外部数据源
主流云服务提供商降价带来一系统连锁反应
在三月份的最后一周,亚洲的主流云服务提供商(CSP)纷纷对其核心服务进行大幅降价,IDC认为,这将使规模较小的云服务提供商更难以继续经营,如果他们继续依赖于基本的、无差别的服务。 IDC亚太区云服务及技术AVP兼首席分析师Chris Morris表示:“如果较小的云服务提供商足够强大,拥有体面的客户群,那么他们将被更大型的提供商收购。如果没有,那么他们将被击败。不管怎样,上述这两种情况都将推动云提供商之间的整合。” Morris解释说,思科宣布与多家主流服务提供商之间围绕InterCloud的合作是基于差异
静一
2018/03/16
6210
如何评估香港主机托管提供商的可靠性和安全性?
如果您正在寻找一个香港主机托管提供商来托管您的网站,那么您需要确保该提供商的可靠性和安全性。在选择一个主机托管提供商之前,您需要了解以下几个方面。
一枕寒凉
2023/05/04
1.9K0
JDBC数据源
Spark SQL支持使用JDBC从关系型数据库(比如MySQL)中读取数据。读取的数据,依然由DataFrame表示,可以很方便地使用Spark sql提供的各种算子进行处理。 这里有一个经验之谈,实际上用Spark SQL处理JDBC中的数据是非常有用的。比如说,你的MySQL业务数据库中,有大量的数据,比如1000万,然后,你现在需要编写一个程序,对线上的脏数据某种复杂业务逻辑的处理,甚至复杂到可能涉及到要用Spark SQL反复查询Hive中的数据,来进行关联处理。 那么此时,用Spark SQL来通过JDBC数据源,加载MySQL中的数据,然后通过各种算子进行处理,是最好的选择。因为Spark是分布式的计算框架,对于1000万数据,肯定是分布式处理的。而如果你自己手工编写一个Java程序,那么不好意思,你只能分批次处理了,先处理2万条,再处理2万条,可能运行完你的Java程序,已经是几天以后的事情了。
编程那点事
2023/02/25
6590
OLEDB数据源
OLEDB虽然是基于COM的一组接口,但是它与标准的COM接口有点不同,它的一大特色在于它自身的属性设置,有的接口虽然对象中存在但是调用QueryInterface是查询不出来的,只有设置相应的接口才会打开,有的接口可以根据属性值表现不同的行为。比如设置了对应的只读属性则不允许使用更新接口。 每个属性都有值、类型、说明和读写属性,对于行集对象,还有一个用于指示是否可以逐列应用它的指示器。 属性由一个GUID和一个整数ID进行唯一标识。 属性集是所有具有相同 组GUID 的一组属性。在逻辑上它们都用于同一种功能,比如有的属性集用于设置数据源连接属性,有的用于设置行集属性等等。它们是应用在同一个特定对象上的一组属性。在每个这样的属性组中都有属性每个属性属于一个或者多个属性组。 属性定义如下:
Masimaro
2018/08/31
7980
Spring系列之数据源的配置 数据库 数据源 连接池的区别
写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:https://github.com/abel-max/Java-Study-Note/tree/master
用户5546570
2020/09/24
9810
Spring系列之数据源的配置 数据库 数据源 连接池的区别
CDN源站可用性测试工具
目前较大规模的网站在搭建时都会使用CDN的架构,以提高用户访问网站的速度。如果访问量较大话一台服务器的性能已经不能够满足当前的业务需求,此时往往都用到负载均衡,其后端绑定多个服务器的架构。负载均衡在绑定多个服务器时,就有可能会出现服务器资源不一致的情况。如果后端有大量的服务器,此时需要紧急的判断那台服务器资源异常就是一个比较棘手的问题。本文提供一个功能较为齐全的源站可用性测试工具,用来快速检测源站资源不一致的问题。
苏欣
2019/07/06
5.1K0

相似问题

Vue反应性:通过提供和注入创建反应性数据

22

反应性发亮源

28

使用autorun订阅反应性数据源

23

从路由(Iron Router)设置反应性数据源会破坏反应性

10

Quarkus反应性数据源初始池大小

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文