вложенный компонент не может получить реквизит через соединение - PullRequest
0 голосов
/ 24 мая 2019

Я использую подключенный компонент в качестве реквизита, переданного родительскому компоненту, но я не могу получить какие-либо реквизиты от connect () или даже от определения функции внутри компонента.

Я пыталсяопределил функцию props в render (), но все еще не работает

import React from 'react';
import PropTypes from 'prop-types';
import {Col,Row} from 'antd'
import injectSheet from 'react-jss';

class SubComponent extends React.Component{
    constructor(props){
        super(props);

    }
    picClicked=()=>{
        console.log("cause state!");
        console.log(this.props.picClicked);// output undefined
        this.props.picClicked;
    }
    render(){

        const {picClicked,classes} = this.props;// classes is from react-jss

        console.log(this.props);// only classes is shown from the console log
        return(
            <div>
                <div onClick={this.picClicked} className={classes.headBlank}>
                </div>
            </div>
        )
}
SubComponent.propTypes={
    picClicked:PropTypes.func.isRequired
};
export default injectSheet(logoStyle)(SubComponent)

, тогда контейнер выглядит следующим образом:

const mdtp = (dispatch)=>{
    return{
        picClicked:()=>{console.log("picClicked!");}
    };
};

export default connect(null,mdtp)(SubComponent);

SubComponent затем используется как props в другом родительском компоненте, напримерthis:

ReactDOM.render(
        <Provider store={storeMainContents}>
            <ParentComponent  contentsShow={<SubComponent />} />
        </Provider>
        ,document.getElementById("parentComponent")

);

Родительский компонент выглядит следующим образом:

render(){

        const {contentsShow,classes}=this.props;

        return(
            <div>
                <div>
                    {this.props.contentsShow}

                </div>
            </div>
            );
    }

Я ожидал, что SubComponent может получить доступ к реквизитам, таким как picClicked, как действие, которое может быть отправлено или, по крайней мере,получить доступ.Теперь это просто не определено.

...