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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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
Reactjs React Redux:组件或容器中的表单?_Reactjs_Redux_Redux Thunk - Fatal编程技术网

Reactjs React Redux:组件或容器中的表单?

Reactjs React Redux:组件或容器中的表单?,reactjs,redux,redux-thunk,Reactjs,Redux,Redux Thunk,我在理解何时使用组件以及何时使用容器时遇到一些困难。我知道只有容器才应该连接到商店,所有(展示)组件都应该作为道具获得所有必要的输入 如果我想写,比方说,一个登录页面,我会创建一个LoginPage.js来呈现一个UserForm.js。现在我不太明白如何从这里开始。我应该将UserForm连接到商店或登录页面,还是编写一个呈现LoginPage.js并连接到商店的LoginContainer.js更好 在最后一个例子中,当提交UserForm时,如何调度(异步,使用redux thunk)操作

我在理解何时使用组件以及何时使用容器时遇到一些困难。我知道只有容器才应该连接到商店,所有(展示)组件都应该作为道具获得所有必要的输入

如果我想写,比方说,一个登录页面,我会创建一个
LoginPage.js
来呈现一个
UserForm.js
。现在我不太明白如何从这里开始。我应该将UserForm连接到商店或登录页面,还是编写一个呈现
LoginPage.js
并连接到商店的
LoginContainer.js
更好

在最后一个例子中,当提交UserForm时,如何调度(异步,使用redux thunk)操作。这必须从LoginPage完成,但LoginPage不知道任何提交,是吗

我希望这个问题不要太模糊或不清楚。 任何帮助都将不胜感激


干杯

将您的
LoginPage.js
连接到redux存储并在其中呈现
LoginForm.js
。将所有必要的数据作为道具传递(也可以传递函数)

例如— 您的
LoginPage.js
将是这样的(我这里没有写完整的代码)

我希望这能对你有所帮助。
如果您在这里有任何查询帖子…

那么我必须在onLogin()中发送一些登录请求操作?谢谢!你能简单地评论一下为什么这是推荐的方式吗?为什么直接连接LoginForm或为LoginPage创建一个额外的容器不是一个好主意?基本上你的组件应该是哑的。。。不知道redux存储/状态的。。。它们只是表象的组成部分。。。同样,你也可以用更合适的容器来做。。。您的页面将包含连接到路由的组件。。。然后这些将渲染容器。。。这是我个人喜欢的方式。。。最后,这取决于你想如何组织你的项目。。。。。
onLogin(loginData) {
  // do what you wanna do on login and call routeActions to move another 
  page after successfull login 
}
render() {
 return(
   <LoginForm login={this.props.login} onLogin={this.onLogin} />
 );
}
 const mapStateToProps = (state) => ({
   login: state.login, // put your redux state here
 });
 export default connect(mapStateToProps)(LoginPage);
render() {
  return (
     //some html stuff here(login form)
     // on submit call that method from props 
     // this.props.onLogin(pass login data here)
  );
}