父子组件通信:
props:{ } -------------------用于指定当前自定义组件,可以拥有的所有自定义属性. required: 是否需要.(不填会报错) props:{ msg:{ type:String, required:true }, href:{ type:String, required:false }, arr:{ type:Array, required:false } } 放在props里的所有要获取的属性都不能用大写. 子组件写静态链接会跳转不过去 在CLI脚手架中,如果属性的required为false,必须要给一个默认值default:(以工厂函数形式返回) arr:{ type:Array, required:false, default:function(){ return [1,2,4,6,9];//若父组件有值,优先取父组件的值,没有才用默认值 } }prop 的大小写
-
官 : HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符。
- html 的标签和 属性 都是一样,忽略大小写
<H1 TITLE="哈哈">我是h1</H1>
-
官 : 这意味着当你使用 DOM 中的模板时,camelCase (驼峰命名法) 的 prop 名不好使了
-
<child :cMsg="pmsg"></child>
会报警告,父传子也接收不到了 - 原因是 : 接收的属性是:cMsg, 因为忽略大小写,已为 : cmsg
- 所以已经准备要读取的 是 cmsg 的值,否则要报警告
You should probably use "c-msg" instead of "cMsg".
-
-
方式 1 : 全用小写,不要使用驼峰命名 (不推荐)
- 接收 :
cmsg
- props/读取 :
cmsg
- 接收 :
-
方式 2 官 : 需要使用其等价的 kebab-case (短横线分隔命名) 命名: (推荐)
- 接收 :
:c-msg='pmsg'
- props/读取 :
cMsg / this.cMsg
- 接收 :
-
大小写在 父传子和 子传父中的应用 (都是要 带 - 的)
-
- 父传子 :
:c-msg ==> cMsg
改驼峰 - 因为props - 子传父 :
@todo-head = 'pAddTodo' ==> this.$emit('todo-head')
不改驼峰
- 父传子 :
-
完善 TodoMVC : 底部隐藏+剩余完成数+清除完成
- 计算属性 : 已知值(todoList 在 根组件) ==> 得到一个新值(子组件里使用)
- 父 => 子通讯
-
番外篇 : 方法当属性传、传过来的带:得到的原型
具体如下图: