【发布时间】:2018-09-02 01:57:27
【问题描述】:
我有 5 代组件结构: A-B-C-D-E
首先我创建一个上下文:
const ThemeContext = React.createContext();
在 A 中创建提供者
<ThemeContext.Provider value={this.props.name} >
<Col><Menu navbarState={this.state.name} /></Col>
</ThemeContext.Provider>
在 E 中,我需要使用 {this.props.name} 创建上下文
export class Panel extends RoleAwareComponentUser{
constructor(props) {
super(props);
// component will be visible for the roles below:
this.authorize = ['user'];
}
render(){
const jsx =(
<div>
<ThemeContext.Consumer>
{value => <Col><Link className={{value: value}} to= "/HomePage">Panel</Link></Col>}
</ThemeContext.Consumer>
</div>
);
return this.shouldBeVisible() ? jsx : null;
}
}
Link className 的输出是“[Object, object]”
如何正确传递道具?
【问题讨论】:
-
顺便说一句,React 开发团队不建议继承组件。相反,您应该使用组合。 reactjs.org/docs/…
-
嗯,所以如果我在另一个组件中有组件中的组件,不建议这样做?
-
组件的组合很好。但是在这里,您的组件继承了 RoleAwareComponentUser。
-
你应该看看高阶组件。
-
那么提供者值没有被传递,或者
props.name是假的。如果没有 作为父级,则会发生这种情况。从您发布的代码中不清楚这一点,即 A 和 E 是如何相关的。请提供可以复制您的问题的stackoverflow.com/help/mcve。
标签: reactjs