当前位置: 首页 > 知识库问答 >
问题:

如何在高阶组件中包装此子级?

公冶峰
2023-03-14
const LoggedInView = (props) => <Text>You are logged in!</Text>
export default withAuth(LoggedInView)


const withAuth = (component) => <AuthRequired>{ component }</AuthRequired>


const AuthRequired = (props) => {
    const context = useContext(AuthContext)
    if(!context.auth){
        return (
            <View style={styles.container}>
               <Text>You need to login . Click here</Text>
            </View>
        )
    }
    return props.children 
}

我的<代码>

共有3个答案

陈君之
2023-03-14

正如我所知,您不能在React中返回子函数。你试试这个怎么样?

const LoggedInView = <div>You are logged in!</div>;

当我在我的笔记本电脑上尝试时,这个代码是有效的。

请看看这个链接:函数作为React子级是无效的。如果您返回一个组件而不是从render返回,可能会发生这种情况

穆承运
2023-03-14

您可以使用辅助组件。它是高阶分量。辅助元素是不具有语义目的,但为了分组元素、样式等目的而存在的东西。只需创建一个名为< code>Aux.js的组件,并将它放在:

const aux = ( props ) => props.children;

export default aux;

然后用Aux将<code>与AUTH</code>包装。

const withAuth = (component) => {
     return ( 
           <Aux> 
               <AuthRequired>{ component }</AuthRequired>
           </Aux> 
      );
}
邵鸿福
2023-03-14

HOC获取一个组件并返回另一个组件。您正在获取一个组件并返回一个React节点,而不是组件。文档参考

就您的情况而言,您应该能够做到以下几点:

const withAuth = (Component) => (props) => <AuthRequired><Component ...props /></AuthRequired>

它可能更容易理解为:

function withAuth(Component) {
    return function WithAuthHOC(props) {
        return (
            <AuthRequired>
                <Component ...props />
            </AuthRequired>
        );
    }
}
 类似资料:
  • Examples Using the `withRouter` utility 如果你想应用里每个组件都处理路由对象,你可以使用withRouter高阶组件。下面是如何使用它: import { withRouter } from 'next/router' const ActiveLink = ({ children, router, href }) => { const style =

  • 在React中,高阶组件是重用组件逻辑的一项高级技术。高阶组件并不是React API的一部分。高阶组件源自于React生态。 具体来说,高阶组件是一个函数,能够接受一个组件并返回一个新的组件。 const EnhancedComponent = higherOrderComponent(WrappedComponent); 组件是将props转化成UI,然而高阶组件将一个组价转化成另外一个组件

  • 本文向大家介绍React.js中的高阶组件,包括了React.js中的高阶组件的使用技巧和注意事项,需要的朋友参考一下 高阶部分简称为hoc。这是一种接收组件并返回具有附加功能的新组件的模式。 // hoc是自定义JavaScript函数的名称 我们使用带有状态和/或道具的组件来构建UI。hoc用类似的方法从提供的组件中构建一个新组件。 使用hoc在React中成为一个横切关注点。这些组件将负责单

  • React Apollo Mutations允许我创建一个组件,该组件采用MutationResult作为道具:https://www.apollographql.com/docs/react/api/react-apollo.html#mutation-render-prop 现在,如果我要使用由graphql()创建的高阶组件 我的组件将只有作为道具。如何将获取到组件中?

  • 我正在用TypeScript编写一个React高阶组件(HOC)。HOC应该比包装组件多接受一个道具,所以我写了以下内容: 换句话说,是一个生成实际hoc的函数。这个HOC(我相信)是一个接受

  • 问题内容: 我有一个组件,有时有时需要呈现为和,有时需要呈现为。在我读来确定这一点,是。 如果存在,则需要将组件包装在中。否则,它将仅呈现为。 可能? 这是我现在正在做的,但是感觉可以简化: 更新: 这是最终的锁定。感谢您的提示,@ Sulthan! 问题答案: 只需使用一个变量。 或者,您可以使用辅助函数来呈现内容。JSX和其他代码一样。如果要减少重复,请使用函数和变量。