この記事では主に props を介した VueJS コンポーネント間の相互作用と検証について紹介します。興味のある方は参考にしてください。
props は、データを渡すために親コンポーネントによって使用されるカスタム プロパティです。親コンポーネントのデータは props を通じて子コンポーネントに渡す必要があり、子コンポーネントは props オプションを使用して "prop" を明示的に宣言する必要があります。
親コンポーネントは props を通じて子コンポーネントにデータを渡します
HTML
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 菜鸟教程(runoob.com)</title> <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script> </head> <body> <p id="app"> <child message="hello world!">props传递给子组件</child> </p> <script> // Vue.component('child', { // 声明 props props: ['message'], // 同样也可以在 vm 实例中像 “this.message” 这样使用 template: '<h1>{{ message }}</h1>' }) // 创建根实例 new Vue({ el: '#app' }) </script> </body> </html>
その効果は図に示すとおりです:
データ転送を構築するための動的 props
使用と同様v-bind による HTML 機能のバインド v-bind を使用して、props の値を親コンポーネントのデータに動的にバインドすることもできます。親コンポーネントのデータが変更されると、その変更は子コンポーネントにも送信されます:
HTML
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 菜鸟教程(runoob.com)</title> <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script> </head> <body> <p id="app"> <p> <input v-model="parentMsg"> <br> <child v-bind:message="parentMsg"></child> </p> </p> <script> // 注册 Vue.component('child', { // 声明 props props: ['message'], // 同样也可以在 vm 实例中像 “this.message” 这样使用 template: '<span>{{ message }}</span>' }) // 创建根实例 new Vue({ el: '#app', data: { parentMsg: '父组件内容' } }) </script> </body> </html>
結果は図に示すとおりです:
v-bind 命令が渡されます。繰り返される各コンポーネントへの todo
HTML
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 菜鸟教程(runoob.com)</title> <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script> </head> <body> <p id="app"> <ol> <todo-item v-for="item in sites" v-bind:todo="item"></todo-item> </ol> </p> <script> Vue.component('todo-item', { props: ['todo'], template: '<li>{{ todo.text }}</li>' }) new Vue({ el: '#app', data: { sites: [ { text: 'Runoob' }, { text: 'Google' }, { text: 'Taobao' } ] } }) </script> </body> </html>
では、効果は次のとおりです:
注: 小道具は一方向のバインディングです: 親コンポーネントのプロパティが変更されると、それらは送信されます子コンポーネントに接続しますが、その逆はできません。
コンポーネントは props の検証要件を指定します
props が文字列配列ではなくオブジェクトである場合、検証要件が含まれます:
JS
Vue.component('example', { props: { // 基础类型检测 (`null` 意思是任何类型都可以) propA: Number, // 多种类型 propB: [String, Number], // 必传且是字符串 propC: { type: String, required: true }, // 数字,有默认值 propD: { type: Number, default: 100 }, // 数组/对象的默认值应当由一个工厂函数返回 propE: { type: Object, default: function () { return { message: 'hello' } } }, // 自定义验证函数 propF: { validator: function (value) { return value > 10 } } } })
type は次のネイティブ コンストラクターにすることができます:
String
Number
Boolean
Function
Object
Array
typeはカスタムコンストラクタにすることもできます。instanceof検出を使用してください。
以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
Vue2.0 マルチタブ切り替えコンポーネントのカプセル化の概要
以上がVueJS コンポーネントが props を通じてどのように対話し、検証するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。