reactjs – 如何从Child组件调度动作三级?
发布时间:2020-12-15 20:51:30 所属栏目:百科 来源:网络整理
导读:我目前正在面对设计一个React应用程序的这个问题,而我似乎无法找到答案. 因此,我的应用程序具有以下反应路由器中组件的历史 应用 – DynamicContainer – – LoginComponent 现在,LoginComponents具有使用用户名和密码的表单元素. 我有userActionCreators处
我目前正在面对设计一个React应用程序的这个问题,而我似乎无法找到答案.
因此,我的应用程序具有以下反应路由器中组件的历史 应用 现在,LoginComponents具有使用用户名和密码的表单元素. 我有userActionCreators处理登录名,并且在完成时调度登录成功,但我似乎找不到正确的方法来连接我的LoginComponent来调度操作或调用actionCreators. 我该怎么做?任何建议将不胜感激.
一个选项是通过连接将单一用途表单绑定到其操作.由于< LoginComponent />通常总是做同样的事情,你可以这样使用:
import React from 'react'; import * as userActionCreators from '../actions/users'; import { connect } from 'react-redux'; export class LoginComponent extends React.Component { static propTypes = { login: React.PropTypes.func.isRequired } render() { const { login } = this.props; const { username,password } = this.state; return ( <form onSubmit={ () => login(username,password) }> ... </form> ); } } export default connect(null,userActionCreators)(LoginComponent); 连接自动绑定动作创建者并单独提供派驻到道具,所以如果你想更加明确,上面的例子是相同的 import React from 'react'; import { login } from '../actions/users'; import { connect } from 'react-redux'; export class LoginComponent extends React.Component { static propTypes = { dispatch: React.PropTypes.func.isRequired } render() { const { login,dispatch } = this.props; const { username,password } = this.state; return ( <form onSubmit={ () => dispatch(login(username,password)) }> ... </form> ); } } export default connect()(LoginComponent); 并作为参考,userActionCreators: const LOGIN_SUCCESS = 'LOGIN_SUCCESS'; const LOGIN_FAILED = 'LOGIN_FAILED'; export function login(username,password) { if (username === 'realUser' && password === 'secretPassword') { return { type: LOGIN_SUCCESS,payload: { name: 'Joe',username: 'realUser' } }; } else { return { type: LOGIN_FAILED,error: 'Invalid username or password }; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读