2.1
for循环时,可以这么写
(let i = 0, length = children.length; i < length; i++)
propTypes.arrayOf(propTypes.oneOfType([propTypes.string, propTypes.number]))
父组件
static propTypes = { onSelected: propTypes.func }
static childContextTypes = { onSelected: propTypes.func }
getChildContext() { const onSelected = _onSelected.bind(this) const context = { onSelected }; return Object.freeze(context); }
子组件
static contextTypes = { onSelected: propTypes.func }
_onSelected = () => { this.context.onSelected() }
<a onClick={this._onSelected.bind(this)}/>
总结:context 使用一般适用于多重组件嵌套或者子组件需要从祖先组件取值或者触发祖先组件的方法,步骤:首先在祖先组件定义类型,再定义需要传出去的方法或者值,在子组件中先定义,然后用this.context使用。