ipyvuetify 无法将 prop 设置为静态文本

Posted

技术标签:

【中文标题】ipyvuetify 无法将 prop 设置为静态文本【英文标题】:ipyvuetify can't set prop to static text 【发布时间】:2022-01-14 19:05:10 【问题描述】:

你好互联网的好人;)

新工作,新语言。我需要在 Jupiter 笔记本中修改 Ipyvuetify Vue 代码以使用静态道具。

我能够拼凑简单的 vue 示例 我可以在 vue 文件中以声明性方式通过分配的静态文本设置子组件的属性。 它在 js 变体中工作得很好。 https://jsfiddle.net/wu9bxL1n/1/

但同样的方法在 ipyvuetify 语法中似乎根本不起作用。没有错误没有什么。分配给子道具的静态字符串只是被默默地忽略,我似乎无法在文档中找到任何原因。我错过了什么?

这是 ipyvuetify 语法复制/粘贴到 Jupiter 笔记本中的最小可能代码。

import ipyvuetify as v
import traitlets
​
class AA(v.VuetifyTemplate):
    template = traitlets.Unicode('''
    <template>
        <v-card-title>label</v-card-title>
    </template>
    <script> export default  name: "aa", props: ['label']  </script>''').tag(sync=True)
    
    label = traitlets.Unicode('But this is showing default text instead').tag(sync=True)
​
class BB(v.VuetifyTemplate):
    template = traitlets.Unicode('''
    <template>
    <div>
      <v-text-field label="This text was set statically" ></v-text-field>
      <aa           label="This text was set statically"></aa>
    </div>
    </template>''').tag(sync=True)
   
    components = traitlets.Dict(default_value='aa': AA()).tag(sync=True, **v.VuetifyTemplate.class_component_serialization)
​
BB()

​---

Output:

This text was set statically
But this is showing default text instead

【问题讨论】:

【参考方案1】:

哦,男孩。

答案是在某些 3rd 方库源代码中看到的一些未记录的行为。

我们需要使用

default_value='aa': AA

而不是

default_value='aa': AA()

然后将静态道具设置为您自己的组件将起作用。 我知道很奇怪。

希望解决某些问题的人会发现这一点。 保重伙计们;)

【讨论】:

以上是关于ipyvuetify 无法将 prop 设置为静态文本的主要内容,如果未能解决你的问题,请参考以下文章

使用 css prop 运行带有 CRA 和 Emotion 的 Quokka.js 时出现错误(运行时为经典时无法设置 importSource)

Vue.js + Typescript:如何将@Prop 类型设置为字符串数组?

使用 props 将 php 变量设置为 vue 组件

可以将 propTypes 和 defaultProps 作为静态 props 放在 React 类中吗?

React prop使用和传入限制、默认值

Next.js getStaticProps() 无法正确呈现静态 HTML