Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Vue 3:访问组件内部的数据对象

Vue 3:访问组件内部的数据对象
EN

Stack Overflow用户
提问于 2020-10-21 12:29:40
回答 3查看 1.4K关注 0票数 0

这段代码来自Vue 3文档,并且正在运行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const data = { a: 1 }

// The object is added to a component instance
const vm = Vue.createApp({
  data() {
    return data
  }
}).mount('#app')

console.log(vm.a) // => 1

但是,如果我使用render()函数创建组件,我将无法访问数据对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let options = window[this.data.get('index')];
options.baseUrl = window['baseUrl'];
const app2 = Vue.createApp({
     render() {
         const {h} = Vue;
             return h(app.component('ComponentA'), options)
         }
      })
     .mount("#app");

console.log(app2.baseUrl);  // undefined
console.log(app2.$data); // {}
EN

回答 3

Stack Overflow用户

发布于 2020-10-21 12:54:07

定义一个normal data选项并将该options添加到其中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let options = {}
options.baseUrl = "someurl.com";
const app2 = Vue.createApp({
    data() {
      return {
        options
      }
    },
    render() {

      const {
        h
      } = Vue;
      return h(Vue.createApp({}).component('ComponentA', {
        template: '<h1>hello</h1>'
      }))
    }
  })
  .mount("#app");

console.log(app2.options);
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://unpkg.com/vue@3.0.0-rc.11/dist/vue.global.prod.js"></script>

<div id="app" someVariable='some value'>
  Vue 3 app
</div>

票数 3
EN

Stack Overflow用户

发布于 2020-10-21 13:32:47

显然,您的options对象具有错误的签名。尝试将选项变量更改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let options = {
  data: {
    index: window[this.data.get('index')]
  }
};
票数 1
EN

Stack Overflow用户

发布于 2020-10-21 16:36:16

如果你使用render函数只是为了传递变量给它,你也可以使用createApp的第二个参数来填充道具。

如果要对options进行反应式更改,可以将$props用作options对象的反应式版本。您可以重新分配options或使用新变量。这将使应用程序中的更改具有反应性,因此在应用程序之外更改一个值将更新应用程序。对app2.baseUrl的更改不会是反应性的,但reactiveOptions.baseUrl将是反应性的。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let options = { baseUrl: "localhost:3k/" }

const app2 = Vue.createApp({
  props: ['baseUrl'],
  template:'<h1>APP2 @{{ baseUrl }}</h1>'
}, options).mount("#app");

let reactiveOptions = app2.$props;

console.log(app2.baseUrl);
console.log(reactiveOptions);

function onClick(){
  reactiveOptions.baseUrl += "&key="
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://unpkg.com/vue@3.0.0-rc.13/dist/vue.global.prod.js"></script>
<div id="app"></div>

<Button onclick="onClick()">change</Button>

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

https://stackoverflow.com/questions/64463554

复制
相关文章
Nginx 反向代理可以缓存 HTTP POST 请求页面吗?
本文节选自《Netkiller Web 手札》 作者:netkiller 网站:http://www.netkiller.cn 答案是可以! 因为nginx 使用 url 作为缓存的key ( Nginx 将url地址 md5后作为缓存的 key ),所以默认情况下 Nginx 只能处理 HTTP GET 缓存。 对于 HTTP POST 请求,提交数据放在HTTP Head 头部提交到服务器的, 提交前后URL始终不变,Nginx 无法区分相同网址两次请求的内容有变化。 但是我们可以自定义 缓存 key
netkiller old
2018/03/05
2.4K0
django admin 列表禁用删除操作,编辑页面禁用删除按钮
class AnchorBindAgentAdmin(admin.ModelAdmin): def get_actions(self, request): # 列表禁用删除操作 if 'delete_selected' in actions: del actions['delete_selected'] return actions def has_delete_permission(self, request, o
卓越笔记
2023/02/18
2.1K0
django开发中利用 缓存文件 进行页面缓存
Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires。
雷子
2021/03/15
1.1K0
django开发中利用 缓存文件 进行页面缓存
『叶问』#42,可以禁用MyISAM引擎吗
随着MySQL 8.0的推出,系统表已经全面采用InnoDB引擎,不再需要MyISAM引擎。另外,MGR中也不支持MyISAM引擎。
老叶茶馆
2022/01/18
4830
java缓存设置_缓存数据可以清除吗
1、@Cacheable(key = “#vo.toString()”, value=”licence”) //载入缓存
全栈程序员站长
2022/11/09
1.6K0
Django | 页面数据的缓存与使用
一个动态网站的基本权衡点就是,它是动态的。 每次用户请求页面,服务器会重新计算。从开销处理的角度来看,这比你读取一个现成的标准文件的代价要昂贵的多
py3study
2020/01/16
1.9K0
Django | 页面数据的缓存与使用
Django-4 管理页面
Django 管理页面是查看我们的应用程序中当前数据的好方法,并且还为我们提供了用于创建或修改该数据的良好图形化界面展示。让我们开始吧:
XXXX-user
2019/07/23
6470
Django-4 管理页面
禁用页面缓存的几种方法(静态和动态)
 1、在Asp页面首部加入     Response.Buffer   =   True      JavaScript
Java架构师必看
2021/03/22
1.1K0
为何禁用MyBatis缓存
mybatis 缓存的是对象,是数据库resultSet经过DefaultResultSetHandler 处理后生成的java对象。
全栈程序员站长
2022/08/30
9550
JavaScript禁用页面刷新
JavaScript禁用页面刷新代码如下: //禁用F5刷新 document.onkeydown = function () { if (event.keyCode == 116) { event.keyCode = 0; event.cancelBubble = true; return false; } } //禁止右键弹出菜单 document.oncontextmenu = function () { return fals
磊哥
2018/05/08
4.9K0
html中input禁用缓存
方法一: 在不想使用缓存的input中添加 autocomplete="off" eg: <input type="text" autocomplete="off" name="test" />
botkenni
2019/09/03
2.6K0
从Django的Turotial中可以学到什么?
我自己在实现代码的过程中发现这个新手指导基本上就算是Django项目开发的一个缩影了。你完全可以做完它之后继续跟着它的思路走。从这个Tutorials中我们可以学到哪些东西呢?我自己总结了一下。
the5fire
2019/02/28
8530
Spring还可以这样用缓存,你知道吗?
大家在项目开发过程中,或多或少都用过缓存,为了减少数据库的压力,把数据放在缓存当中,当访问的请求过来时,直接从缓存读取。缓存一般都是基于内存的,读取速度比较快,市面上比较常见的缓存有:memcache、redis、mongodb、guava cache等。
小忽悠
2019/07/27
5210
小程序可以缓存视频吗?| 小程序问答 #24
小程序为何不能缓存视频?那又如何安全地清理小程序中的缓存数据呢?知晓程序(微信号 zxcx0101)今天就来为你解答这两个问题。
知晓君
2018/08/01
2.7K0
Redis 可以禁用的高危命令
redis一款高并发的内存K-V数据库,提供了好多命令,但是其中有部分对于生产环境来说比较危险,需要禁用掉。
zeekling
2022/08/26
8780
Django 缓存6.2
缓存 对于中等流量的网站来说,尽可能地减少开销是必要的。缓存数据就是为了保存那些需要很多计算资源的结果,这样的话就不必在下次重复消耗计算资源 Django自带了一个健壮的缓存系统来保存动态页面,避免对于每次请求都重新计算 Django提供了不同级别的缓存粒度:可以缓存特定视图的输出、可以仅仅缓存那些很难生产出来的部分、或者可以缓存整个网站 设置缓存 通过设置决定把数据缓存在哪里,是数据库中、文件系统还是在内存中 通过setting文件的CACHES配置来实现 参数TIMEOUT:缓存的默认过期时间,以秒为单
Lansonli
2021/10/09
3780
validateRequest=false 可以禁用请求验证[通俗易懂]
参看了MVP的利用WebClient和WebRequest类获得网页源代码于是想自己动手写点,当然是参考其的办法啦。
全栈程序员站长
2022/06/28
5890
快速禁用Chrome浏览器缓存
在前端的开发中,最麻烦的莫过于浏览器的缓存,经常需要清理缓存文件,导致开发效率较低。
用户1212940
2022/04/13
3K0
快速禁用Chrome浏览器缓存
Redis 可以禁用的高危命令
redis一款高并发的内存K-V数据库,提供了好多命令,但是其中有部分对于生产环境来说比较危险,需要禁用掉。
zeekling
2022/08/02
2.2K0
点击加载更多

相似问题

AndEngine Box2D Body GetContactList

14

如何旋转Box2d body?

10

Box2D:如何手动渲染body

32

Libgdx | Box2D | body冲突轮询

19

设置Box2d Body LIBGDX原点

115
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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