我正在嘗試類似於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上指定他們的道具,而不是通過「啞」道具指定它們會更好。傳遞屬性對我來說不起作用,因爲用戶需要傳遞的不僅僅是字符串。 –