我有一个要根据传递给HOC的条件呈现的组件。
组件中的条件与withAuthz
HOC一起导出:
//...component code above
const condition = role => !!role.claims["master"];
export default withAuthz(condition)(ThisComponent);
然后,我在我的HOC中使用condition
函数,向其中传递role
对象。现在,这不起作用,在编译时给了我TypeError: role is undefined
。我认为我在我的情况下尝试错误地访问role
对象claims
属性。有什么专家可以帮忙吗?我应该更改condition
函数的功能吗?
编辑 withAuthz
HOC:
const withAuthz = (condition) => Component => {
class WithAuthz extends React.Component {
componentDidMount() {
this.listener = this.props.firebase.auth.onAuthStateChanged(
authUser => {
if (!authUser) {
this.props.history.push("/login")
}
else {
//I fetch the object and then pass it to condition
authUser.getIdTokenResult().then((result) => {
var THE_OBJECT = result;
if (!condition(THE_OBJECT)) {
alert("Unauthorised Access")
}
});
}
}
)
}