Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有可能在React中没有类的情况下实现类似于HOC的功能?_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 有没有可能在React中没有类的情况下实现类似于HOC的功能?

Javascript 有没有可能在React中没有类的情况下实现类似于HOC的功能?,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我想做一些类似的事情: <SomeProvider showConfirm={showConfirm}> {props.showConfirm() ? (<confirmActionComponent />) : (<chooseActionComponent />)} </SomeProvider> {props.showConfirm() ? () : ()} 在chooseActionComponent内部,我希

我想做一些类似的事情:

<SomeProvider showConfirm={showConfirm}>
    {props.showConfirm()
    ? (<confirmActionComponent />)
    : (<chooseActionComponent />)}
</SomeProvider>

{props.showConfirm()
? ()
: ()}
chooseActionComponent
内部,我希望能够访问
showConfirm
或深嵌套子组件中的另一个值,以更新父组件中的某些值,并使
confirmationComponent
显示

我知道如何使用
class
来实现这一点,这往往会在某个时候涉及
this
bind
,我宁愿避免这种情况


有没有办法用纯功能/组件来完成类似的事情?您还希望将此内容保留在Redux商店之外。

如果您只想访问
showConfirm
,只需将其传递给孩子:

<SomeProvider showConfirm={showConfirm}>
    {props.showConfirm()
    ? (<confirmActionComponent />)
    : (<chooseActionComponent showConfirm={showConfirm} />)}
</SomeProvider>
注意:不建议这样做,我也不建议这样做。 我建议你只需将所需的家长道具传递给孩子即可

<SomeProvider showConfirm={showConfirm}>
    {props.showConfirm()
    ? (<confirmActionComponent />)
    : (<chooseActionComponent showConfirm={showConfirm} />)}
</SomeProvider>

您不必使用ES6类来创建内容。如果您希望避免重复使用
bind
以确保方法的正确作用域(使用
this.setState
/
this.props
),则可以恢复使用React API帮助器函数


您可以专门使用:来创建React类和HOC。再次重申:使用此替代语法将为您自动绑定此

对,但这正是我试图重构的:)
<SomeProvider showConfirm={showConfirm}>
    {props.showConfirm()
    ? (<confirmActionComponent />)
    : (<chooseActionComponent showConfirm={showConfirm} />)}
</SomeProvider>