Jua*_*tiz 5 ejs reactjs redux react-redux
我试图使用 Redux 和函数userSignUpRequest创建一个 React 组件 我按照教程但仍然收到错误:我认为这是可能的,因为我使用 module.exports 来导出我的组件而不是默认情况下导出但我不知道如何修复它.
我的店铺:
const middleware = routerMiddleware(hashHistory);
const store = createStore(
reducers,
applyMiddleware(middleware)
);
render(
<Provider store={store}>
<Router
onUpdate={scrollToTop}
history={history}
routes={rootRoute}
/>
</Provider>,
document.getElementById('app-container')
);
Run Code Online (Sandbox Code Playgroud)
这是我的组件:
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux'; //to pass functions
import { userSignUpRequest } from '../../../actions/loginAxios';
class Login extends React.Component {
constructor() {
super();
this.state = {
{** initial state **}
};
}
onSubmit(e) {
e.preventDefault();
if(this.isValid()){
//reset errros object and disable submit button
this.setState({ errors: {}, isLoading: true });
//we store a function in the props
this.props.userSignUpRequest(this.state).then(
(response) => {
//succes redirect
this.context.router.history.push('/');
},
(error) => {
console.log("error");
this.setState({ errors: error.response.data, isLoading: false });
});
} else {
console.log(this.state.errors);
}
}
onChange(e) {
this.setState({ [e.target.name]: e.target.value });
}
render() {
const { errors } = this.state; //inicializate an get errors
const { userSignUpRequest } = this.props;
return (
<div className="body-inner">
{*** My React Login React Form ***}
</div>
);
}
}
const Page = () => (
<div className="page-login">
<div className="main-body">
<QueueAnim type="bottom" className="ui-animate">
<div key="1">
<Login />
</div>
</QueueAnim>
</div>
</div>
);
//To get the main Actions
Login.propTypes = {
userSignUpRequest: PropTypes.func.isRequired
};
function mapStateToProps(state) {
//pass the providers
return {
}
}
module.exports = connect(mapStateToProps, { userSignUpRequest })(Page);
Run Code Online (Sandbox Code Playgroud)
这是我的函数“loginAxios.js”
import axios from "axios";
export function userSignUpRequest(userData) {
return dispatch => {
return axios.post("/api/users", userData);
}
}
Run Code Online (Sandbox Code Playgroud)
我是 React 的新手,所以非常感谢您的支持!!谢谢
您明确使用propTypes甚至使用isRequired,这正是它听起来的样子。
Login.propTypes = {
userSignUpRequest: PropTypes.func.isRequired
};
Run Code Online (Sandbox Code Playgroud)
但是在您的Page组件中,您没有提供 prop name userSignUpRequest。你只是这样:
<Login/>
Run Code Online (Sandbox Code Playgroud)
如果userSignUpRequest从根本上需要该组件才能工作,则需要将其传入。
<Login userSignUpRequest={() => myFunction()}/>
Run Code Online (Sandbox Code Playgroud)
如果不是,那么只需删除您的propTypes声明。
| 归档时间: |
|
| 查看次数: |
10215 次 |
| 最近记录: |