Reactjs Can';t从React Router 4嵌套路由中的Redux Connect()获取道具
我正在尝试从嵌套路由中的Redux connect()访问道具。但是不能让它工作 我有以下组成部分: main.js const initState={}Reactjs Can';t从React Router 4嵌套路由中的Redux Connect()获取道具,reactjs,react-redux,react-router-redux,react-router-v4,Reactjs,React Redux,React Router Redux,React Router V4,我正在尝试从嵌套路由中的Redux connect()访问道具。但是不能让它工作 我有以下组成部分: main.js const initState={} const history = createBrowserHistory(); const store = configureStore(initState, history); ReactDOM.render( <Provider store={store}> <ConnectedRouter history
const history = createBrowserHistory();
const store = configureStore(initState, history);
ReactDOM.render(
<Provider store={store}>
<ConnectedRouter history={history}>
<App />
</ConnectedRouter>
</Provider>,
document.getElementById('root')
);
const history=createBrowserHistory();
const store=configureStore(initState,history);
ReactDOM.render(
,
document.getElementById('root'))
);
在app.js中,我设置了几个路由
class App extends Component {
render() {
return (
<Switch>
<Route path="/auth" component={Auth} />
<Route exact path="/" component={Home} />
</Switch>
);
}
}
export default withRouter(App);
类应用程序扩展组件{
render(){
返回(
);
}
}
使用路由器(App)导出默认值;
然后在Auth组件中
function Auth(props) {
return (
<div>
<Route exact path={`${props.match.path}/login`} component={Login} />
</div>
);
}
export default withRouter(Auth);
export class Login extends Component {
login({email, password}) {
this.props.login({ email, password });
}
render() {
return (
<Form
onSubmit={(credentials) => this.login(credentials)} />
);
}
}
Login.propTypes = {
login: PropTypes.func
}
const mapDispatchToProps = (dispatch) => {
return {
login: (credentials) => dispatch(loginRequest(credentials))
};
}
export default connect(null, mapDispatchToProps)(Login);
函数身份验证(道具){
返回(
);
}
使用路由器导出默认值(Auth);
最后是我的登录组件
function Auth(props) {
return (
<div>
<Route exact path={`${props.match.path}/login`} component={Login} />
</div>
);
}
export default withRouter(Auth);
export class Login extends Component {
login({email, password}) {
this.props.login({ email, password });
}
render() {
return (
<Form
onSubmit={(credentials) => this.login(credentials)} />
);
}
}
Login.propTypes = {
login: PropTypes.func
}
const mapDispatchToProps = (dispatch) => {
return {
login: (credentials) => dispatch(loginRequest(credentials))
};
}
export default connect(null, mapDispatchToProps)(Login);
导出类登录扩展组件{
登录({电子邮件,密码}){
this.props.login({email,password});
}
render(){
返回(
this.login(凭据)}/>
);
}
}
Login.propTypes={
登录名:PropTypes.func
}
const mapDispatchToProps=(调度)=>{
返回{
登录:(凭证)=>分派(登录请求(凭证))
};
}
导出默认连接(空,mapDispatchToProps)(登录);
触发this.props.login({email,password})代码>应发送我的登录请求(凭证)
操作
但是,我得到一个this.props.login不是一个函数
错误。实际上,我的登录组件中没有设置任何道具。connect()
似乎根本没有效果
父母可以使用connect()
注入的道具,但是这条二级路线无法获得它应该接收的道具
我希望这足够清楚。。我错过什么了吗?你知道会出什么问题吗
谢谢你的帮助 从导出类登录扩展组件{
定义逻辑类时删除导出
,并确保将逻辑作为默认组件导入,如从'/path/to/Login
导入登录
class Login extends Component {
login({email, password}) {
this.props.login({ email, password });
}
render() {
return (
<Form
onSubmit={(credentials) => this.login(credentials)} />
);
}
}
Login.propTypes = {
login: PropTypes.func
}
const mapDispatchToProps = (dispatch) => {
return {
login: (credentials) => dispatch(loginRequest(credentials))
};
}
export default connect(null, mapDispatchToProps)(Login);
类登录扩展组件{
登录({电子邮件,密码}){
this.props.login({email,password});
}
render(){
返回(
this.login(凭据)}/>
);
}
}
Login.propTypes={
登录名:PropTypes.func
}
const mapDispatchToProps=(调度)=>{
返回{
登录:(凭证)=>分派(登录请求(凭证))
};
}
导出默认连接(空,mapDispatchToProps)(登录);
删除导出
,同时从导出类登录扩展组件{
定义逻辑类,并确保将逻辑作为默认组件导入,如从“/path/to/Login导入登录
class Login extends Component {
login({email, password}) {
this.props.login({ email, password });
}
render() {
return (
<Form
onSubmit={(credentials) => this.login(credentials)} />
);
}
}
Login.propTypes = {
login: PropTypes.func
}
const mapDispatchToProps = (dispatch) => {
return {
login: (credentials) => dispatch(loginRequest(credentials))
};
}
export default connect(null, mapDispatchToProps)(Login);
类登录扩展组件{
登录({电子邮件,密码}){
this.props.login({email,password});
}
render(){
返回(
this.login(凭据)}/>
);
}
}
Login.propTypes={
登录名:PropTypes.func
}
const mapDispatchToProps=(调度)=>{
返回{
登录:(凭证)=>分派(登录请求(凭证))
};
}
导出默认连接(空,mapDispatchToProps)(登录);
您的登录函数是否具有正确的此绑定@KamilSocha登录功能收到的所有道具不取决于连接,这就是我无法理解的原因。。但是Shubham khatri指出了我的登录组件中两个导出的错误。。如果没有第二双眼睛,我会花上一段时间才意识到这一点!谢谢你的帮助!您的登录函数对此绑定是否具有正确的权限@KamilSocha登录功能收到的所有道具不取决于连接,这就是我无法理解的原因。。但是Shubham khatri指出了我的登录组件中两个导出的错误。。如果没有第二双眼睛,我会花上一段时间才意识到这一点!谢谢你的帮助!谢谢!就这样!我还在想我到底是不是瞎了。。如果没有另一双眼睛,我可能要花上一段时间才能弄明白!非常感谢您的帮助@shubham khatriThanks!就这样!我还在想我到底是不是瞎了。。如果没有另一双眼睛,我可能要花上一段时间才能弄明白!谢谢你的帮助@shubham khatri