我正在尝试类似于redux-form
,但在Vue &与Vuex。基本上它应该使表单的处理更加流畅,并且让你写出更少的样板。没有明确声明的Vue道具
我遇到的问题是,当我试图将道具动态地传递给HOC组件时。我不太确定如何去做。在作出反应,你会简单地做这样的事情:
<VfField unknownPropA="abc" unknownPropB="123" name="test" />
而且在VfField.js:
export default ({name, ...props}) => <div name={name}><InputComponent {...props} /></div>
这将导致props
是含unknownPropA
和unknownPropB
的对象。
但在Vue公司我有一些代码,看起来像这样:
<vf-form @submit="submit" @validate="validate">
<vf-field type="text" name="username" unknownPropA="abc"></vf-field>
<vf-field type="password" name="password" unknownPropB="123"></vf-field>
<button type="submit">Submit</button>
</vf-form>
那么,怎样才能vf-field
然后访问这些“未知”道具,并把它们传递给他们的孩子组成部分? $vm.$props
只是得到我明确声明的道具,但完全无视其他(unknownPropA
和unknownPropB
)。 “动态”传递道具的力量是我所寻找的,因为它在许多情况下非常有用。
注:
到目前为止,我认为Vue公司是伟大的,简单的事情,它的方式更快地得到的东西运行起来比它会在,比方说,发生反应。但是,只要有什么“不寻常的”,到目前为止,我发现React更有帮助。当然,这可能是由于我缺乏Vue的知识。
我不认为有一个标准的方法来获取未声明的属性,你可以编写你自己的方法来解析'this。el.attributes'作为一个混合,但我的另一个想法是@Saurabh在他的回答更安全更好。 –
模板中的道具应该用kebab-case风格的'unknow-prop-b'写成,并且在你的组件中注册为'props:['unknownPropB']''接受它们 –
我认为这说得好与不好一个诚实的品味问题。对于我来说,把它写成第三部分库,我认为我的用户能够直接在vf-field上指定他们的道具,而不是通过“哑”道具指定它们会更好。传递属性对我来说不起作用,因为用户需要传递的不仅仅是字符串。 –