javascript - 使用 Redux 的 connect 来连接各种组件

标签 javascript reactjs redux react-redux

我有三个相互嵌入的组件,它们都以相同的操作连接到 reducer 。 看来我只找到了在某些容器文件中只有一个组件通过连接函数传递的示例。

我该怎么做?

这是我当前的代码,但不确定是否有必要:

    //need HelpMenu2 and HelpMenu3 to be passed through as well.
    export default connect( mapStateToProps, matchDispatchToProps)(HelpMenu1);

Edit: As requested, here is the code:

class HelpMenu extends Component{
    render(){
        var me=this;
        var api ="https://api.someapi.com/";
        return(
            <ul>
                <div >Click here to test</div><br/>
                {this.state.allTopics.map(function (helpTopics, key) {
                    return (
                        <ul key={key}>
                            <li>

                                <div onClick={()=>me.props.fetchHelpTopics(api)}>
                                    {helpTopics.id}
                                    </div>
                                <ul>
                                    {helpTopics.isExpanded ? <SubMenu2 helpTopics={helpTopics}  isLastExpanded={false}/> : null}
                                </ul>
                            </li>
                        </ul>
                    );
                })}
            </ul>
        );
    }
}

class SubMenu extends Component{

    render(){
        var me =this;
        var api ="https://api.someapi.com/";
        return (
            <div>
                {this.props.helpTopics.subtopics.map(function (helpSubtopics, key) {
                    return (
                        <ul key={key}>
                            <li>
                                <div onClick={()=>me.props.fetchHelpTopics(api)}>
                                    {helpSubtopics.id}</div>
                                {helpSubtopics.isExpanded ? <LastSubMenu helpSubtopics={ helpSubtopics}/> : null}
                            </li>

                        </ul>
                    );
                })}
            </div>
        );
    }
}


class LastSubMenu extends Component{

    render(){
        var me=this;
        var api ="https://api.someapi.com/";
        return(
            <div>
                {this.props.helpSubtopics.subtopics
                    .map(function (helpSubSubtopics, key) {
                        return (
                            <ul key={key}>
                                <li>
                                    <div
                                        onClick={me.onTopicClick.bind(me, helpSubSubtopics)}>
                                            <div onClick={()=>me.props.fetchHelpTopics(api)}>
                                        {helpSubSubtopics.title}
                                        </div>
                                    </div>
                                </li>
                            </ul>

                        );
                    })}
            </div>

        );
    }
}

事件将在标签上有 onClick 的地方发生。

编辑:我的连接代码:

export default connect( mapStateToProps, matchDispatchToProps)(HelpMenu);

我如何对其进行多次调用?根据我的理解,每个文件只能使用一次 export default , 所以我这样做了:

export default connect( mapStateToProps, matchDispatchToProps)(HelpMenu);
connect( mapStateToProps, matchDispatchToProps)(SubMenu2);
connect( mapStateToProps, matchDispatchToProps)(LastSubMenu);

这不起作用。

最佳答案

再次与其他组件调用 connect。

您需要分别导出每个方法调用的返回值。 在 ES6 中可能看起来像这样。 (您可能需要搜索哪些语法适用于您的 js 设置) 导出 const 首先 = connect( mapStateToProps, matchDispatchToProps)(HelpMenu); 导出常量第二=连接(mapStateToProps,matchDispatchToProps)(SubMenu2); 导出常量第三=连接(mapStateToProps,matchDispatchToProps)(LastSubMenu);

然后在显示它们的组件中单独访问它们。

关于javascript - 使用 Redux 的 connect 来连接各种组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40162311/

相关文章:

javascript - 如何在Jquery中的点击事件期间停止滚动

node.js - 吉普 错误!堆栈错误: `C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe` failed with exit code: 1

javascript - 基于另一个组件生命周期的显示组件

angular - 如何在不重复存储对象的情况下在多个状态模型之间进行交互 - NGXS

html - 在 React 应用程序中存储大量数据时我应该更喜欢什么?

javascript - Youtube loadPlaylist并不总是有效

javascript - 更改传递给函数的数组

java - 从 javascript 将对象传递给 Rest

javascript - 如何使用react从下拉选择中获取值

ios - React Native - 在异步操作后导航