如何将有条件的函数正确传递给HOC?

时间:2019-07-15 10:12:52

标签: javascript reactjs

我有一个要根据传递给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")
                        }

                    });
                }

            }
        )

    }

0 个答案:

没有答案