收藏
回答

小程序无法传递深层级函数(函数不是直接定义在data中)给子组件

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 工具 7.0.4 2.14.4

当父组件向子组件传值类型为函数时,data中的直接属性如果是函数,那么是可以传递到子组件中的;但是如果一个函数定义在data的某个深层次结构中,那么子组件就会得不到这个函数值。

在代码片段中,data下的propFunC是可以正常传递到子组件中的;但是data.info.formatter的值为函数,无法传递到子组件中了。

回答关注问题邀请回答
收藏

2 个回答

  • Why not?
    Why not?
    2021-01-14


    属性的类型可以为 String Number Boolean Object Array 其一,也可以为 null 表示不限制类型。

    从基础库 2.0.9 开始,对象类型的属性和 data 字段中可以包含函数类型的子字段,即可以通过对象类型的属性字段来传递函数。


    你细品这段话,是你自己理解错了而已

    2021-01-14
    有用 1
    回复 4
    • 心律
      心律
      2021-01-14
      是的,你说的是对的。可以传一个包含函数的对象给到子组件,子组件从对象中可以拿到函数。非常感谢!
      2021-01-14
      回复
    • 霍霍
      霍霍
      2021-03-04回复心律
      为什么我的子组件还是哪不到属性呢,是传的一个对象里包含一个函数属性,接收后就没有这个属性,这个属性还为数字类型就有了
      2021-03-04
      回复
    • 心存高远
      心存高远
      2022-06-15
      我也是,还是拿不到。头疼
      2022-06-15
      回复
    • Zip.HHHH
      Zip.HHHH
      2023-05-08回复霍霍
      要把函数作为对象的属性值传入,子组件里还得重新写一遍这个方法,调用传入的对象内的属性才行
      2023-05-08
      回复
  • 心律
    心律
    2021-01-13

    官方文档不是说从基础库版本2.0.9开始就支持数据绑定中可以传函数给子组件了吗?怎么还有点残缺的感觉,就只能data的某个属性的值是函数时,才能传给子组件?深层次的函数对象传不了!!!

    如下是官网原文:

    注意:这样的数据绑定只能传递 JSON 兼容数据。自基础库版本 2.0.9 开始,还可以在数据中包含函数(但这些函数不能在 WXML 中直接调用,只能传递给子组件)。

    2021-01-13
    有用 1
    回复
登录 后发表内容
问题标签