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

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

公冶峰
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(我相信)是一个接受

  • 问题内容: 我正在努力了解如何在更高阶的组件中正确实现此验证行为。 ========================================== 编辑:TLDR:感谢用户@ noa-dev的出色建议,我在这里创建了一个React Fiddle:https://jsfiddle.net/8nLumb74/1/ 以显示问题。 我究竟做错了什么? 文本框组件: 验证器组件: 父表单组件: 问题答