在单独的组件上使用React类的方法

时间:2016-03-21 12:43:21

标签: reactjs ecmascript-6 react-router

在我网站的主页上,您可以单击一个菜单按钮,该按钮会触发切换菜单的方法。这会将状态从menuOpenfalse更改为true

在另一个页面上,我点击一个“后退”按钮,它应该转到主页路径,但是在页面加载时打开此菜单而不是我点击。目前我只有:

handleBack(){
   App.navigate('/');
}

我可以import组件并调用其方法吗?或者我可以设置一个新的React路由器路由,以某种方式执行状态更改?或者还有另一种方法吗?

2 个答案:

答案 0 :(得分:1)

如果您需要该方案,请将状态值传递给父组件,该组件是“智能组件”管理哑组件。或者你可以使用'flux'/'redux'。

答案 1 :(得分:1)

Redux会有所帮助,但由于我猜测你没有使用那个OR,你不想重构整个应用程序来设置这个布尔值,我建议使用高阶分量。

例如,您可以像这样定义一个更高阶的组件(想想超类):

409 (CONFLICT)

然后,在常规组件中,您只需使用更高阶的组件包装它。因此,如果以前,您使用ES6并导出组件,如下所示:

export function menuToggler(ComposedComponent) {

    return class extends React.Component {
        toggleMenuBoolean() {
            // code here
        },
        render() {
            return <ComposedComponent toggleMenuBoolean={toggleMenuBoolean} {...this.props} />
        }
    };
}

然后会变成:

export default MyComponent;

从那里,您只需在props上调用它,就可以从高阶组件包装的任何组件调用此export default menuToggler(MyComponent); 函数:

toggleMenuBoolean

更多阅读:

https://medium.com/@dan_abramov/mixins-are-dead-long-live-higher-order-components-94a0d2f9e750#.sh6m9c9ct

相关问题