在加载时无需事件即可将数据从子级传递到父级,这在 vue 世界中可能吗?

2024-01-08

我觉得如果没有 @- click 事件或事件或输入字段或某些需要交互的东西,则不可能将数据从子级传递到父级,只需在加载时通​​过使用此数据中的变量和控制将数据从子级数据变量传递到另一个数据变量中的父级父变量,只是加载时,可能吗?

将 JSON 数据从子级传递到父级并从父级控制它

像这样的东西

```

//child.vue
<template>
  <div>
    {{getData}}
  </div>
</template>

<script>
export default {
  name: 'Contributors', // this is the name of the component
  data () {
    return {
      getData: null
    }
  },
  mounted () {
    this.$http
      .get('https://api.github.com/repos/moumen-soliman/frontend-helper/stats/contributors')
      .then(response => (this.getData = response.data.reverse()))
      .catch(error => console.log(error.response))
  }
}
</script>


app.vue
<template>
  <div id="app">
    <contributors /> //here just pass json data but I can't control it or make it equal variable in app.vue
    {{appGetData}} // i need to make it data equal current variable in parent data

  </div>
</template>
<script>
export default {
  name: 'App',
  data () {
    return {
      appGetData: contributors.getData // I need something like this 
    }
  }
}
</script>

```


@event是首选方式。

我过去通过将函数作为 prop 传递来完成此操作,但这是一种反模式,应该避免。不管怎样,除了警告之外,你可以这样做。

// child.vue
<template>
  <div>
    {{getData}}
  </div>
</template>

<script>
export default {
  name: 'Contributors', // this is the name of the component
  data () {
    return {
      getData: null
    }
  },
  props: {
    setAppGetData: {
      type: Function,
    },
  },
  mounted () {
    this.$http
      .get('https://api.github.com/repos/moumen-soliman/frontend-helper/stats/contributors')
      .then(response => (this.getData = response.data.reverse()))
      .then(() => (this.setAppGetData(this.getData) ) // run function here
      .catch(error => console.log(error.response))
  },
}
</script>


// app.vue
<template>
  <div id="app">
    <contributors :setAppGetData="setAppGetData"/> //here just pass json data but I can't control it or make it equal variable in app.vue
    {{appGetData}} // i need to make it data equal current variable in parent data

  </div>
</template>
<script>
export default {
  name: 'App',
  data () {
    return {
      appGetData: null // I need something like this 
    }
  },
  methods: {
    setAppGetData (data) {
      this.appGetData = data
    }
  }
}
</script>

但在我看来,在这种情况下,倾听者可能仍然工作得更好并且更容易。您可以添加另一个then或使用内部watch触发该事件

那么再一个

  mounted () {
    this.$http
      .get('https://api.github.com/repos/moumen-soliman/frontend-helper/stats/contributors')
      .then(response => (this.getData = response.data.reverse()))
      .then(() => (this.$emit('dataLoaded', this.getData) ) // emit data
      .catch(error => console.log(error.response))
  },

使用手表

  watch: {
    getData(newValue) {
      this.$emmit('dataUpdated', newValue)
    }
  },
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在加载时无需事件即可将数据从子级传递到父级,这在 vue 世界中可能吗? 的相关文章

随机推荐

  • 有没有办法将 Html 插入到 gridview 行中?

    使用 aspnet 3 5 c 有没有办法将 Html 插入 gridview 行 是的 使用TemplateField 然后将您的 html 直接输入到标记中 如果 html 是动态创建的 我会使用Literal代替Label
  • 在C中迭代整数中的数字

    我有一个像 1191223 这样的整数 我想迭代这些数字 我不知道如何在 C 中做到这一点 有什么简单的方法可以做到这一点吗 Thanks 向前 还是向后 假设一个正整数 unsigned int n 1191223 while n 0 d
  • Mac OS X 上的命令行 IntelliJ

    我正在尝试在 Mac OS X 的命令行上启动 IntelliJ 以使用它的 diff 工具 理论上idea sh diff file1 file2应该管用 在实践中 文件存在一些问题 我认为我已经解决了这些问题 删除了 readlink
  • Android Studio Kotlin 正则表达式与预期不同

    我遇到了特定正则表达式的问题 该正则表达式在 Android Studio 中运行时返回的值与预期不同 设想 代码很简单 val regex lt N E G d 2 d toRegex print regex findAll N20323
  • 解析并生成 JSON

    数学的内置格式列表 http reference wolfram com mathematica guide ImportingAndExporting html相当广泛 然而 JSON 并不在该列表中 Mathematica 中是否有用于
  • 如何使用 Google 地图 API 设计其样式

    我正在尝试更改 Google 地图的样式 但我不确定如何更改 谷歌给了我这些对象属性 stylers hue ff0022 saturation 16 lightness 5 但我不确定如何使用以下代码 生成的谷歌地图 使其工作 div s
  • 获取 HDFS 中 parquet 文件的大小,以便在 Scala 中使用 Spark 重新分区

    我在 HDFS 上有许多 parquet 文件目录 每个目录包含数千个小 大多数 使用以下代码 我可以将本地镶木地板文件重新分区为更少数量的部分 val pqFile sqlContext read parquet file home ha
  • R - 计算列表组件的数量[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我知道在 R 中 您可以通过带有双括号的列表进行索引 即mylist 1 如何计算该列表中的元素数量 不是每个列表项中的元素数量 而是最大
  • 将 C++ 中的所有重音字母更改为普通字母

    问题 如何将 C 或 C 中的所有重音字母更改为普通字母 我的意思是这样的e a c会成为eeeeaaaacc 我已经尝试过的 我尝试过手动解析字符串并一一替换它们 但我认为必须有一种我不知道的更好 更简单的方法 这将保证我不会忘记任何重音
  • Chrome/WebKit 在使用背景、边框半径和顶部/底部边框时创建实心条

    Google Chrome 在边框半径 背景颜色以及顶部和底部边框方面存在问题 这是要重现的证据和代码 http jsfiddle net 6ADtd 4 http jsfiddle net 6ADtd 4 div div div back
  • 如何从登录屏幕进入下一个屏幕? JPanel、JFrame?

    我有一个关于构建 GUI 应用程序的问题 我觉得这个问题的标题不太准确 但我想不出更好的标题 构建应用程序的正确方法是什么 我是否应该只创建一个 JFrame 然后根据需要更改该 JFrame 中的面板 或者当我从一件事转移到另一件事时 我
  • 使用 ndk clang 3.4/3.5 编译 __thread 没有运气

    我试图在这个小程序中使用 thread 但没有运气 知道 ndk 10c clang 3 4 3 5 是否支持此 TLS 相同的程序可以使用 ndk gcc 4 8 4 9 和本机 clang gcc 编译器正常编译 这是程序和编译行 th
  • 将 Firebase 导出到 BigQuery 的数据扁平化为 1 行 = 1 个事件的表(嵌套数据中的嵌套数据)

    我想我可以通过提出一个更简单的问题并引用一个更简单的数据示例来获得我需要的东西here https stackoverflow com questions 38839559 flatten bigquery nested field con
  • C++14 中标准布局类的定义

    A 标准布局class 在 C 14 中的 class 7 中定义 如下 重点是我的 A 标准布局class 是一个类 7 1 没有非标准布局类型的非静态数据成员 类 或此类类型的数组 或引用 7 2 没有虚函数 10 3 也没有虚基类 1
  • 如何通过google帐户快速检查用户是否已经在firebase中注册

    我想为用户执行一个操作首次登录 注册 使用谷歌帐户和另一个操作 如果用户之前已经登录过 如果某个用户已经并且仍然使用他们的 Google 帐户登录 我们可以使用这行代码 Auth auth addStateDidChangeListener
  • JSON.Net读取错误

    我正在尝试使用 Json Net 解析一些 JSON 数据 这是我的数据 UIDClan 1 UIDKnjiga 1 Naslov Title1 DatumZaKada 2013 08 09 00 00 00 DatumIstekRez n
  • 在Java中访问其他类文件

    我们刚刚开始为我的学位学习 Java 我得到了一个文件夹 其中包含各种 Java 类 每个类都有自己的 java 文件 文件名与其所在类的名称相同 有一个文件托管一个公共类 其中包含以下内容 public static void main
  • 修改不是先前提交的提交[重复]

    这个问题在这里已经有答案了 我经常会有如下的工作流程 提交对一组文件的更改 将更改提交到不同的文件组 意识到我错过了一些属于第一次提交的更改 Curse 我无法利用git commit amend因为这不是我需要更改的最新提交 将更改添加到
  • 修复了推回内容的元素

    我正在寻找一种在页面顶部有一个固定元素的方法 该元素会根据页面宽度改变高度 并且还会推回下面的内容 到目前为止我已经解决了一些问题 但我希望有一个更干净的解决方案 我所做的是让两个顶部元素具有相同的内容 一个设置为固定位置 另一个设置为相对
  • 在加载时无需事件即可将数据从子级传递到父级,这在 vue 世界中可能吗?

    我觉得如果没有 click 事件或事件或输入字段或某些需要交互的东西 则不可能将数据从子级传递到父级 只需在加载时通 过使用此数据中的变量和控制将数据从子级数据变量传递到另一个数据变量中的父级父变量 只是加载时 可能吗 将 JSON 数据从