Reactjs “的必要性是什么?”;“导出默认连接”;将react组件连接到redux存储时

Reactjs “的必要性是什么?”;“导出默认连接”;将react组件连接到redux存储时,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我试图在同一个jsx文件中创建一些组件。我想将其中一个子组件连接到存储(这里感觉不对),而不将HOC组件连接到存储。 因此,在连接子组件时,他不使用导出默认连接。它会创建一个错误,说明操作未定义 示例代码 class Test1 extends React.Component { constructor(props) { **** } render(){ **** } } function mapActionsToProps(dispatch) { r

我试图在同一个jsx文件中创建一些组件。我想将其中一个子组件连接到存储(这里感觉不对),而不将HOC组件连接到存储。 因此,在连接子组件时,他不使用导出默认连接。它会创建一个错误,说明操作未定义

示例代码

class Test1 extends React.Component {
   constructor(props) {
   ****
   } 
   render(){
   ****
   }
}
function mapActionsToProps(dispatch) {
   return {
       actions: {
          testAction: bindActionCreators(testActionFromActions, dispatch)
       }
   }
connect(mapStateToProps,mapActionsToProps) (Test1);

class Test2 extends React.Component {
   constructor(props){
   ***
   }
   render(){
      return (<Test1/>);
   }
}

export default Test2;
类Test1扩展了React.Component{ 建造师(道具){ **** } render(){ **** } } 函数mapActionsToProps(调度){ 返回{ 行动:{ testAction:bindActionCreators(testActionFromActions,分派) } } 连接(MapStateTrops、mapActionsToProps)(测试1); 类Test2扩展了React.Component{ 建造师(道具){ *** } render(){ 返回(); } } 导出默认Test2; 我的问题是为什么我们总是需要使用连接作为导出默认连接。是否有其他方法进行连接

提前感谢。

connect()返回一个新连接的组件。 事实上,connect()将您的组件包装在一个新组件中,添加了一些有用的功能,这就是为什么您通常导出connect函数(新组件)的返回值

在你的情况下,你应该这样做

class Test1 extends React.Component {
   constructor(props) {
   ****
   } 
   render(){
   ****
   }
}
function mapActionsToProps(dispatch) {
   return {
       actions: {
          testAction: bindActionCreators(testActionFromActions, dispatch)
       }
   }
const ConnectedTest1 = connect(mapStateToProps,mapActionsToProps) (Test1);

class Test2 extends React.Component {
   constructor(props){
   ***
   }
   render(){
      return (<ConnectedTest1/>);
   }
}

export default Test2;
类Test1扩展了React.Component{ 建造师(道具){ **** } render(){ **** } } 函数mapActionsToProps(调度){ 返回{ 行动:{ testAction:bindActionCreators(testActionFromActions,分派) } } const ConnectedTest1=connect(mapStateToProps,mapActionsToProps)(测试1); 类Test2扩展了React.Component{ 建造师(道具){ *** } render(){ 返回(); } } 导出默认Test2;
通过进一步研究,我找到了一种治疗方法:D

connect总是返回一个函数。在我给出的示例中,我输入Test1作为connect函数的参数

因此,我们需要将返回的函数分配给一些变量常量
。之后,我可以导出组件(ConnectedComponent)或在同一文件中重用它

链接帮助我理解这一点


希望这个答案能对其他人有所帮助。

connect
正如名字听起来将您的组件与Redux应用商店相连接。如果没有Redux的连接方法,您无法连接/交互组件。希望这有帮助。谢谢。Adeel Imran。是的。connect不一定总是导出默认连接。您可以使用命名的导出t哦。谢谢Brendan解决了这个问题。再次感谢。换句话说,它会让组件拥有道具和动作。映射themconst ConnectedTest1应该包括mapDispatchToProps而不是mapActionsToProps,如果我没有弄错的话:)谢谢这帮了我!顺便说一句,我做了这件事:
导出{ConnectedTest1 as Test1}
不使用其他组件:)您可以使用下面的代码进行导出。
const ConnectedComponent=connect(MapStateTrops,mapActionsToProps)(Test1);
将{ConnectedComponent导出为Test1}