我很难传递道具到组件。我希望能够在componentDidMount
方法中使用该对象。
我当前的设置是我有一个App
组件,该组件将对象向下传递到Main
,该对象作为道具传递到TicketTable
组件。
这是我的App组件
export default class App extends Component {
constructor(props) {
super(props);
this.state= {
keycloak: null,
authenticated: false,
user : {}, role: ''
}
}
componentDidMount() {
const keycloak = Keycloak('/keycloak.json');
keycloak.init({onLoad: 'login-required'}).then(authenticated => {
this.setState({ keycloak: keycloak, authenticated: authenticated});
// this.state.keycloak.loadUserInfo().success(user => this.setState({user}));
}).catch(err=>console.log("ERROR", err));
}
render() {
return (
<div>
<Main keycloak={this.state.keycloak}/>
这是我的主要组成部分
export default class Main extends Component {
constructor(props){
super(props);
this.state={keycloak:''}
}
componentDidMount(){
console.log("MAIN PROPS",this.props);
}
}
render() {
return (
<div>
<Switch>
<Route exact path="/" render={(props)=><TicketTable
{...props} keycloak={this.state.keycloak}/>}/>
我希望能够在Keycloak
组件中使用TicketTable
对象。
谢谢。
附言:我希望能够做到这一点,而无需使用诸如redux
答案 0 :(得分:2)
您要传递给keycloak
组件的TicketTable
道具实际上是空的,因为您要传递Route
组件的 state 作为道具,并且不是您从App
组件中获得的。
因此请进行更改,我认为它应该起作用:
<Route exact path="/" render={(props)=><TicketTable
{...props} keycloak={this.props.keycloak}/>}/>