通过太多级别的道具

时间:2017-01-09 16:07:06

标签: reactjs

考虑一下

let searchController = UISearchController(searchResultsController: nil) 
searchController.searchResultsUpdater = self
searchController.delegate = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false

如何避免明确地通过中间组件传递Parent component (prop: textColor) intermediate component 1 intermediate component 2 intermediate component N Component with text (needs textColor)

对于Context而言,这是一个很好的用例,即使它有不同原因阻止其使用的警告吗?

2 个答案:

答案 0 :(得分:1)

如果textColor没有变更/不属于州,您可以将其定义为变量并按需导入。

否则,您应该使用上下文,因为这正是它的用例。

  

在某些情况下,您希望通过组件树传递数据,而不必在每个级别手动传递道具

答案 1 :(得分:1)

正如leo建议的那样,使用上下文:

class ParentComponent extends React.Component {
    static childContextTypes = {
        someContext: React.PropTypes.string
    };

    getChildContext() {
        return {
            someContext: 'foo-bar'
        };
    }

}

然后第N个子组件执行:

class NthChild extends React.Component {
    static contextTypes = {
        someContenxt: React.PropTypes.string
    };

    render() {
        // this.context.someContext is available here
    }
}